[CMake] CMAKE_EXE_LINKER_FLAGS for shared libraries?

Michael Wild themiwi at gmail.com
Tue Dec 13 00:26:47 EST 2011


It needs to exist **at the end** of the CMakeLists.txt file containing
the target. If you don't want to do that (or can't, as in your case),
you can use the LINK_FLAGS target property instead.

HTH

Michael

On 12/12/2011 11:39 PM, Robert Dailey wrote:
> I have attached a small CMake project that reproduces the issue I'm
> referring to. Please take a look :)
> 
> ---------
> Robert Dailey
> 
> 
> On Mon, Dec 12, 2011 at 4:11 PM, Robert Dailey <rcdailey at gmail.com
> <mailto:rcdailey at gmail.com>> wrote:
> 
>     I forgot to say that the main issue is that my /NODEFAULTLIB link
>     flag isn't showing up in visual studio.
> 
>     ---------
>     Robert Dailey
> 
> 
> 
>     On Mon, Dec 12, 2011 at 4:10 PM, Robert Dailey <rcdailey at gmail.com
>     <mailto:rcdailey at gmail.com>> wrote:
> 
>         Another issue...
> 
>         At what point is it most important for the values of
>         CMAKE_SHARED_LINK_FLAGS to exist? I set the value of this
>         variable before my call to add_library(), however after that at
>         some point the flags will get reverted because I'm stepping out
>         of function scope. Does it need to exist up to the end of the
>         current cmake script? My flow is basically this (pseudo call stack):
> 
>         Enter CMakeLists.txt
>         - Call define_project() function (in a separate cmake module)
>         - - Call ignore_libs() function
>         - - - Set CMAKE_SHARED_LINK_FLAGS with PARENT_SCOPE
>         - - Call create_target() function
>         - - - Call add_library() command
>         Leave CMakeLists.txt
> 
>         I've done some testing and I find that before the call to
>         add_library(), my flags are setup properly in the
>         CMAKE_SHARED_LINK_FLAGS variable.
> 
>         ---------
>         Robert Dailey
> 
> 
> 
>         On Mon, Dec 12, 2011 at 2:20 PM, Michael Wild <themiwi at gmail.com
>         <mailto:themiwi at gmail.com>> wrote:
> 
>             On 12/12/2011 09:13 PM, Robert Dailey wrote:
>             > On Mon, Dec 12, 2011 at 2:10 PM, David Cole
>             <david.cole at kitware.com <mailto:david.cole at kitware.com>
>             > <mailto:david.cole at kitware.com
>             <mailto:david.cole at kitware.com>>> wrote:
>             >
>             >     Apparently, they are undocumented, but there are also:
>             >
>             >     CMAKE_SHARED_LINKER_FLAGS and
>             CMAKE_MODULE_LINKER_FLAGS (and their
>             >     per-config variants) for SHARED and MODULE library
>             targets as well.
>             >
>             >     Use CMAKE_SHARED_LINKER_FLAGS instead.
>             >
>             >
>             > Thanks for the information guys. I'm having a minor
>             problem with these
>             > variables though.
>             >
>             > Here is how I use it:
>             >
>             > set( CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS}
>             > /NODEFAULTLIB:\"${lib}\" )
>             >
>             > Prior to calling the set above, the shared linker flags
>             look like this:
>             >
>             >  /STACK:10000000 /machine:X86
>             >
>             > After calling the set above, it looks like this:
>             >
>             >   /STACK:10000000 /machine:X86 ;/NODEFAULTLIB:"LIBC"
>             >
>             > For some reason a semi-colon is being inserted prior to the
>             > /NODEFAULTLIB part. I don't know why this is happening but
>             visual studio
>             > is complaining about it. Any reason why this is happening?
>             Thanks.
>             >
> 
>             That's how CMake works.
> 
>             set(VAR val1 val2 val3)
> 
>             defines a *list* where the elements are separated by a
>             semi-colon (;).
>             To prevent that, quote the assignment:
> 
>             set(VAR "val1 val2 val3")
> 
> 
>             Michael
> 
>             --
> 
>             Powered by www.kitware.com <http://www.kitware.com>
> 
>             Visit other Kitware open-source projects at
>             http://www.kitware.com/opensource/opensource.html
> 
>             Please keep messages on-topic and check the CMake FAQ at:
>             http://www.cmake.org/Wiki/CMake_FAQ
> 
>             Follow this link to subscribe/unsubscribe:
>             http://www.cmake.org/mailman/listinfo/cmake
> 
> 
> 
> 



More information about the CMake mailing list