[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