[cmake-developers] Global flags for creating static libraries

Evan Pipho hiwrac at gmail.com
Fri Dec 7 19:35:12 EST 2012


Thanks Brad, I will start taking a look this weekend.

As for flags being passed to the librarian /LTCG for whole program
optimization is probably the most common (and came up the most when I
searched on this issue) but controlling warnings with /ignore and turning
on warnings as errors (/wx) is also useful.



On Fri, Dec 7, 2012 at 10:41 AM, Brad King <brad.king at kitware.com> wrote:

> On 12/07/2012 12:04 AM, Evan Pipho wrote:
> > I am looking for a way to set global flags for the librarian when
> creating static libraries, similar to CMAKE_SHARED_LINKER_FLAGS or
> CMAKE_EXE_LINKER_FLAGS.  This would facilitate things like using 3rd party
> libraries that already use cmake without having to modify their
> CMakeLists.txt to set these
> > flags.
> >
> >
> >     I found http://public.kitware.com/Bug/view.php?id=10094 which
> mentions using CMAKE_STATIC_LINKER_FLAGS as well as this fairly old thread
> http://www.cmake.org/pipermail/cmake/2009-October/032563.html also
> mentioning this.
> >
> >     Has there been any progress on this feature?
> >     If not, does a feature that exposes a CMAKE_STATIC_LINKER_FLAGS (and
> CMAKE_STATIC_LINKER_FLAGS_<TARGET>) which are then passed to the librarian
> (ar, lib.exe etx) make sense?  I think this would be quite useful,
> especially for those of us that use cmake with visual studio.
> >
> >     I would like to get the lists input, and if it is positive I would
> be interested in creating a patch to add this functionality.
>
> There is also this issue:
>
>  http://www.cmake.org/Bug/view.php?id=10768
>
> which was resolved here:
>
>  http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fe971d97
>  http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3303dbc
>
> to add a STATIC_LIBRARY_FLAGS_<CONFIG> version of the property
> as requested in the mailing list thread you linked.
>
> What is still missing is the cache variables equivalent to
>
>  CMAKE_EXE_LINKER_FLAGS
>  CMAKE_EXE_LINKER_FLAGS_<CONFIG>
>  CMAKE_SHARED_LINKER_FLAGS
>  CMAKE_SHARED_LINKER_FLAGS_<CONFIG>
>  CMAKE_MODULE_LINKER_FLAGS
>  CMAKE_MODULE_LINKER_FLAGS_<CONFIG>
>
> for static libraries.  Following the above convention the names
>
>  CMAKE_STATIC_LINKER_FLAGS
>  CMAKE_STATIC_LINKER_FLAGS_<CONFIG>
>
> make sense even though no linking is actually performed.  To add
> them, look for places already handling the above variables and
> find the equivalents for static libs.  You will need to modify at
> least:
>
>  cmLocalGenerator::GetTargetFlags
>  cmGlobalXCodeGenerator::CreateBuildSettings
>  cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules
>  cmLocalVisualStudio7Generator::OutputBuildTool
>  cmLocalVisualStudio6Generator::WriteDSPHeader
>
> You will also need to modify the module
>
>  Modules/CMakeCommonLanguageInclude.cmake
>
> to add the empty default cache entries.  Finally, look in the
> cmDocumentVariables.cxx source file to add documentation.
>
> BTW, what kind of flags do you want to add to the librarian?
>
> -Brad
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake-developers/attachments/20121207/c3fbabca/attachment.htm>


More information about the cmake-developers mailing list