[CMake] target_link_libraries not working with add_library

Michael Wild themiwi at gmail.com
Fri Feb 25 07:57:17 EST 2011


On 02/25/2011 01:48 PM, Felipe Ferreri Tonello wrote:
> Guys,
> 
> I'm doing this:
> add_library(lib_base ${sources})
> target_link_libraries(lib_base ${libs})
> 
> but look at the linker output:
> /usr/bin/ar cr liblib_base.a  CMakeFiles/lib_base.dir/diskman.cpp.o
> CMakeFiles/lib_base.dir/netutils.cpp.o
> CMakeFiles/lib_base.dir/base.cpp.o
> CMakeFiles/lib_base.dir/datetime.cpp.o
> CMakeFiles/lib_base.dir/datasource.cpp.o
> CMakeFiles/lib_base.dir/tinifile.cpp.o
> CMakeFiles/lib_base.dir/list.cpp.o
> CMakeFiles/lib_base.dir/memstream.cpp.o
> CMakeFiles/lib_base.dir/misc.cpp.o CMakeFiles/lib_base.dir/stringz.cpp.o
> CMakeFiles/lib_base.dir/critsec.cpp.o
> CMakeFiles/lib_base.dir/threads.cpp.o
> CMakeFiles/lib_base.dir/sockets.cpp.o
> CMakeFiles/lib_base.dir/sockserver.cpp.o
> CMakeFiles/lib_base.dir/sockthread.cpp.o
> CMakeFiles/lib_base.dir/strfunc.cpp.o CMakeFiles/lib_base.dir/ssl.cpp.o
> CMakeFiles/lib_base.dir/rwlock.cpp.o CMakeFiles/lib_base.dir/ipc.cpp.o
> CMakeFiles/lib_base.dir/decContext.cpp.o
> CMakeFiles/lib_base.dir/decimal.cpp.o
> CMakeFiles/lib_base.dir/decimal32.cpp.o
> CMakeFiles/lib_base.dir/decimal64.cpp.o
> CMakeFiles/lib_base.dir/decimal128.cpp.o
> CMakeFiles/lib_base.dir/decNumber.cpp.o
> CMakeFiles/lib_base.dir/decPacked.cpp.o
> /usr/bin/ranlib liblib_base.a
> 
> see? No linked libraries, only linked objects...
> 
> How to proceed?
> 

Well, you simply *CAN'T* link a static library against another library.
After all, it's just a glorified zip-file. But CMake will remember that
you specified that lib_base depends on ${libs}, and when you link a
executable or dynamic library against lib_base, CMake will link that
target also against ${libs}.

HTH

Michael


More information about the CMake mailing list