[CMake] LINK_DIRECTORIES before ADD_EXECUTABLE?

John Platt jcplatt at dsl.pipex.com
Mon May 18 18:21:17 EDT 2009


Hi,

I have built a static library lib1 and test program lib1test using the following CMAKE 2.6.2 commands without problems.

INCLUDE_DIRECTORIES( /usr/local/boost_1_39_0 )
ADD_LIBRARY( lib1 STATIC ${lib1_srcs} )

ADD_EXECUTABLE( lib1test lib1test.cpp )
LINK_DIRECTORIES( /usr/local/lib ) # boost stuff
TARGET_LINK_LIBRARIES( lib1test lib1 boost_filesystem-gcc42-mt boost_system-gcc42-mt )
 
When attempting to build a 2nd static library lib2 (which uses code in lib1) and test program lib2test with a similar script  -

INCLUDE_DIRECTORIES( /home/john/lib1/src )
ADD_LIBRARY( lib2 STATIC ${lib2_srcs} )

ADD_EXECUTABLE( lib2test lib2test.cpp )
LINK_DIRECTORIES( /home/john/lib1/src ) ## doesn't work here
TARGET_LINK_LIBRARIES( lib2test lib2 lib1 boost_filesystem-gcc42-mt boost_system-gcc42-mt)

I get the following link error
/usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld: cannot find -llib1

If LINK_DIRECTORIES is moved before ADD_EXECUTABLE -

LINK_DIRECTORIES( /home/john/lib1/src ) ## works here
ADD_EXECUTABLE( lib2test lib2test.cpp )
TARGET_LINK_LIBRARIES( lib2test lib2 lib1 boost_filesystem-gcc42-mt boost_system-gcc42-mt)

lib2test links and executes.

I would really appreciate some help with the following questions. 

1. Are the boost libraries statically or dynamically linked to lib1test?

2. Why does moving LINK_DIRECTORIES before ADD_EXECUTABLE appear to fix things?

3. The location of the boost libraries has not been specfied but lib2test still links?

TIA,

John.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090518/659c7b37/attachment.htm>


More information about the CMake mailing list