[cmake-developers] Global flags for creating static libraries

Evan Pipho hiwrac at gmail.com
Mon Dec 10 17:45:17 EST 2012


I am nearly finished with this, just need to write the variable
documentation and test the xcode generators.

Once that is complete what is the best way to submit a change this
size? While it is not very complex, it did touch a good number of files
since it affected many generators.

I have committed everything so far to my github fork at
 https://github.com/hiwrac/CMake/commits/static_linker_flags

I can easily generate a patch file of the whole branch and attach it to the
bug, just wondering if there is another preferred way.

Thanks
-Evan

On Fri, Dec 7, 2012 at 7:35 PM, Evan Pipho <hiwrac at gmail.com> wrote:

> 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/20121210/e891cdfa/attachment.htm>


More information about the cmake-developers mailing list