[CMake] How to relink executables when depdent library got changed ?
Chih-pin Wu
stokeman at gmail.com
Thu Jun 11 10:55:49 EDT 2009
Hi Bill:
Thanks, it's exactly what you mentioned, and I got some mistake on my
CMakeList.txt.
Originally I have some syntax like:
SET(LIB_DIRS ${LIB_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../../../lib)
SET(LIBS ${LIBS} "libMyLibA.a")
TARGET_LINK_LIBRARIES(${PROGNAME} ${LIBS})
And I suddenly found out the usage was wrong and just too stupid ..
although it works on my first make.
However it would't relink when ../../../lib/libMyLibA.a got updated.
After I changed to:
SET(LIB_DIRS ${LIB_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../../../lib)
SET(LIBS ${LIBS} "MyLibA")
TARGET_LINK_LIBRARIES(${PROGNAME} ${LIBS})
// or
SET(LIBS ${LIBS} "../../../lib/libMyLibA.a")
TARGET_LINK_LIBRARIES(${PROGNAME} ${LIBS})
Both works when libMyLibA got updated.
Now it works fine. And thank you.
On Thu, Jun 11, 2009 at 9:44 PM, Bill Hoffman <bill.hoffman at kitware.com>wrote:
> Chih-pin Wu wrote:
>
>> Hi all:
>>
>> I'm working on an embedded platform and building integrated software as
>> multimedia CE devices. And I am just started trying to introduce CMake to
>> replace my legacy environment constructed by many hand-written gnu styled
>> makefiles.
>>
>> I have many components which is cross referred to each other very
>> complicatedly, and it really helps a lot when I started to migrate to CMake
>> with the benefit of automatic dependency checking.
>>
>> However, my order of building is
>> i) build lots of libraries, called components
>> ii) then build final executable, called application, linking with
>> libraries
>>
>> I really felt comfort when I modified some header files in the component
>> directory, and makefiles generated by CMake automatically found it, rebuild
>> all dependent source files as well as the libraries.
>> However I could not make my final executable link those libraries
>> automatically when libraries got changed.
>>
>> I used TARGET_LINK_LIBRARIES to enumerate linking libraries, also
>> ADD_DEPENDENCIES with these libraries.
>> But I still can't make it relink to a executable when those libraries got
>> changed, no matter it's rebuilt by makefile or replaced by some newer
>> revision.
>>
>>
> Can you post some of your cmake code? This should work. I suspect that
> you are not using full paths to libraries in target_link_libraries.
> add_dependencies should not be needed.
>
> -Bill
>
--
Wu Chih-pin(吳智斌)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090611/c194ef16/attachment-0001.htm>
More information about the CMake
mailing list