Hi,
The problem with using SUBDIR is that variables will get scoped to the
subdirectory and not automatically available in the parent. There are
two ways around this.
The method I use heralds from CMake 1.8. You simply include the
CMakeLists.txt files directly, thus putting everything in the same scope:
INCLUDE(subdir1/CMakeLists.txt)
INCLUDE(subdir2/CMakeLists.txt)
ADD_LIBRARY(irgendwas
hello.cpp
${subdir_1_SRCS}
${subdir_2_SRCS}
)
In subdir1/CMakeLists.txt
SET(subdir_1_SRCS
subdir1/hello1.cpp
subdir1/hello2.cpp
)
In subdir2/CMakeLists.txt
SET(subdir_2_SRCS
subdir2/hello3.cpp
subdir2/hello4.cpp
)
The other option is to get the value using GET_DIRECTORY_PROPERTY (note
the following code may or may not work, because I don't have a concrete
example of it):
GET_DIRECTORY_PROPERTY(subdir_1_SOURCES DIRECTORY subdir1
DEFINITION subdir_1_SOURCES)
This looks like an example of using GET_DIRECTORY_PROPERTY:
http://public.kitware.com/pipermail/cmake-commits/2006-October/000303.html
James
Michael Hammer wrote:
Hi!
I would like to add a library and the sources are distributed in
different directories, something like the following example:
/ CmakeLists.txt
hello.cpp
subdir1 / hello1.cpp
hello2.cpp
CMakeLists.txt
subdir2 / hello3.cpp
hello4.cpp
CMakeLists.txt
In the CMakeLists.txt of subdir1 I would write:
set( subdir1_SOURCES
hello1.cpp
hello2.cpp )
similar in subdir2
set( subdir2_SOURCES
hello3.cpp
hello4.cpp )
in /CMakeLists.txt I would add something like that:
add_subdirectory(subdir1)
add_subdirectory(subdir2)
add_library( irgendwas
hello.cpp
subdir_1/${subdir1_SOURCES}
subdir_2/${subdir2_SOURCES} )
Unfortunately this doesn't work ;) CMake doesn't set the variables
subdirx_SOURCES by calling add_subdirectory. The next problem I see is
the add_library statement. In subdir1_SOURCES there is a necessary path
prefix (subdir1/, subdir2/) missing - I am really not sure if I can add
the prefix the way I have done it here (obviously not ;)).
Perhaps someone can help? I am sure there is a "good" or "accurate" way
to do this - thanks a lot.
Michael
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake