[CMake] How to use 'CMAKE_EXE_LINKER_FLAGS' correctly

Chaos Zhang zcsd2012 at gmail.com
Tue May 24 05:34:52 EDT 2016


This CMake  feature is interesting, the first step i plan is to make the
project work first, then i will try to optimize it, and i think this feature
would be used next step. Thanks. :-)

Chuck Atkins wrote
> If you know the full path to the library then I'd suggest using it as
> /path/to/foo/libfoo.a (or .so if it's shared) instead of -L/path/to/foo
> -lfoo.  CMake will adjust the flags to -L and -l if needed but the
> preference is always to use the full library path.
> 
> - Chuck
> 
> On Mon, May 23, 2016 at 2:23 AM, Chaos Zhang <

> zcsd2012@

> > wrote:
> 
>> Thanks a lot! `set(FOO_LIBRARY "-Wl,--whole-archive ${FOO_LIBRARY}
>> -Wl,--no-whole-archive")` worked when the content of ${FOO_LIBRARY} look
>> like `-Ldir -llib`, if just use lib name as the content of
>> ${FOO_LIBRARY},
>> error while occur.
>>
>> Chuck Atkins wrote
>> >> -rpath
>> >
>> >
>> >  RPATHs are automatically added by CMake to executables so they can use
>> > libraries from the build tree.
>> >
>> >
>> >
>> >> -whole-archive
>> >>
>> >
>> > whole-archive is definitely trickier since you shouldn't be applying it
>> to
>> > the entire executable but instead wrapping individual libraries with
>> it.
>> > Conveniently, you can pass link options directly with
>> > target_link_libraries.  So you could have:
>> >
>> > # Just an example, find_library calls should really be isolated to
>> > separate
>> > find modules
>> > find_library(FOO_LIBRARY foo)
>> > set(FOO_LIBRARY "-Wl,--whole-archive ${FOO_LIBRARY}
>> > -Wl,--no-whole-archive")
>> >
>> > add_executable(hello main.c)
>> > target_link_libraries(hello ${FOO_LIBRARY})
>> >
>> >
>> >>> set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L . -lhello")
>> >>
>> >
>> > CMAKE_EXE_LINKER_FLAGS should work for other more general cases that
>> > aren't
>> > tied to specific libraries.  The problem with your example is likely
>> not
>> > using an absolute path for -L since the compilation is actually taking
>> > place in a nested work directory somewhere.
>> >
>> > --
>> >
>> > Powered by www.kitware.com
>> >
>> > Please keep messages on-topic and check the CMake FAQ at:
>> > http://www.cmake.org/Wiki/CMake_FAQ
>> >
>> > Kitware offers various services to support the CMake community. For
>> more
>> > information on each offering, please visit:
>> >
>> > CMake Support: http://cmake.org/cmake/help/support.html
>> > CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> > CMake Training Courses: http://cmake.org/cmake/help/training.html
>> >
>> > Visit other Kitware open-source projects at
>> > http://www.kitware.com/opensource/opensource.html
>> >
>> > Follow this link to subscribe/unsubscribe:
>> > http://public.kitware.com/mailman/listinfo/cmake
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://cmake.3232098.n2.nabble.com/How-to-use-CMAKE-EXE-LINKER-FLAGS-correctly-tp7593495p7593518.html
>> Sent from the CMake mailing list archive at Nabble.com.
>> --
>>
>> Powered by www.kitware.com
>>
>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Kitware offers various services to support the CMake community. For more
>> information on each offering, please visit:
>>
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake
>>
> 
> -- 
> 
> Powered by www.kitware.com
> 
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
> 
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake





--
View this message in context: http://cmake.3232098.n2.nabble.com/How-to-use-CMAKE-EXE-LINKER-FLAGS-correctly-tp7593495p7593539.html
Sent from the CMake mailing list archive at Nabble.com.


More information about the CMake mailing list