[cmake-developers] Global flags for creating static libraries

Brad King brad.king at kitware.com
Fri Dec 7 10:41:55 EST 2012


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


More information about the cmake-developers mailing list