[CMake] Linking archives in a sibling directory
Raymond Wan
r.wan at aist.go.jp
Wed Dec 1 02:18:37 EST 2010
Hi all,
I'm having a problem understanding how I can link to an archive in
another directory which is not a subdirectory. For example:
myproj
+-- main
+-- CMakeLists.txt
+-- source files for main program
+-- dir-A
+-- CMakeLists.txt
+-- source files for sub-program A
+-- dir-B
+-- CmakeLists.txt
+-- source files for sub-program B
Basically, I would like to make a larger project (main) and I'm
building and testing each of its components separately.
Right now, the main's CMakeLists.txt looks something like this:
INCLUDE_DIRECTORIES (../dir-A)
SUBDIRS (../dir-A)
ADD_EXECUTABLE (main ${MAIN_SRCS})
TARGET_LINK_LIBRARIES (main subprogA_ar)
which works fine so far (the CMakeLists.txt in dir-A generates the
archive subprogA_ar).
However, I just found out that SUBDIRS is deprecated and so, replaced
it with "ADD_SUBDIRECTORY". That's when I got an error about "dir-A"
not being a subdirectory. Obviously, I was not using "SUBDIRS" before
as it was intended... :-)
I've also tried adding "dir-A" as a LINK_DIRECTORIES with no success.
It is unable to find subprogA_ar.
I'm not sure if it is possible, but ideally, when I run "make" in
main/, I would like it to rebuild the targets in "dir-A" (including
the archive) and link that in.
I'm also open to the possibility that I got the above organization all
wrong and should have only one large CMakeLists.txt in a directory
structure like this:
myproj
+-- main
+-- CMakeLists.txt
+-- source files for main program
+-- dir-A
+-- source files for sub-program A
+-- dir-B
+-- source files for sub-program B
Is this what I should have done??
Thank you!
Ray
More information about the CMake
mailing list