[Cmake] CMakeLists setup for simple problem
William A. Hoffman
billlist at nycap.rr.com
Wed Jun 2 09:12:16 EDT 2004
If you only have a .h file, then there is no object file created and no library.
-Bill
At 03:21 AM 6/2/2004, michael_cm at gmx.ch wrote:
>Hi,
>
>thanks for the help. The setup you proposed works. However, I had to notice
>the following:
>
>In the common directory, I at first had a class Hello which only consisted
>of a .h file:
>
>-----
>#ifndef __Hello_h
>#define __Hello_h
>
>#include <iostream>
>
>class Hello {
>public:
> void Print() {
> std::cout << "Hello" << std::endl;
> }
>};
>
>#endif
>-----
>
>In the CMakeLists.txt file I wrote:
>
>ADD_LIBRARY(mycommon Hello.h)
>
>This setup did not work, I got the error message:
>
>LINK : fatal error LNK1104: cannot open file "mycommon.lib"
>
>Then I split up the Hello class in a .h and a .cxx file and everything
>worked fine. Even keeping the implementation in the .h file and adding an
>entirely empty .cxx file helped.
>
>Why is this .cxx file necessary?
>
>Thanks,
>
>Michael
>
>
>
>> michael_cm at gmx.ch wrote:
>> > Hi,
>> >
>> > I would like to set up the following directory structure:
>> >
>> > src_dir/common
>> > src_dir/app1
>> > src_dir/app2
>> > ...
>> >
>> >
>> > In the directory 'common', I'd like to have classes used by application1
>> and
>> > application2 (and some more applications). The files belonging to these
>> > applications (including the file with the main() function) are stored in
>> > 'app1', 'app2' and so on.
>> >
>> > I'd like to use cmake to create my make files, since I'd like to compile
>> the
>> > project on different platforms.
>> >
>> > Unfortunately I didn't really get it to work and would therefore like to
>> > know how to properly set up the CMakeLists.txt files for this (I guess)
>> > simple problem.
>>
>> # src_dir/CMakeLists.txt
>> PROJECT(MYPROJ)
>> INCLUDE_DIRECTORIES(${MYPROJ_SOURCE_DIR}/common)
>> SUBDIRS(common app1 app2)
>>
>> # src_dir/common/CMakeLists.txt
>> ADD_LIBRARY(mycommon src1.cxx src2.cxx)
>>
>> # src_dir/app1/CMakeLists.txt
>> ADD_EXECUTABLE(app1 app1.cxx)
>> TARGET_LINK_LIBRARIES(app1 mycommon)
>>
>> # src_dir/app2/CMakeLists.txt
>> ADD_EXECUTABLE(app2 app2.cxx)
>> TARGET_LINK_LIBRARIES(app2 mycommon)
>>
>> -Brad
>>
>
>--
>"Sie haben neue Mails!" - Die GMX Toolbar informiert Sie beim Surfen!
>Jetzt aktivieren unter http://www.gmx.net/info
>
>_______________________________________________
>Cmake mailing list
>Cmake at www.cmake.org
>http://www.cmake.org/mailman/listinfo/cmake
More information about the Cmake
mailing list