MantisBT - CMake
View Issue Details
0014161CMakeCMakepublic2013-05-22 08:442013-10-07 10:09
Matthew Bentham 
Brad King 
normalminoralways
closedfixed 
Apple MacOS X10.4.10
CMake 2.8.11 
CMake 2.8.12CMake 2.8.12 
0014161: Xcode generator ignores CMAKE_(MODULE|SHARED)_LINKER_FLAGS_<CONFIG>
When generating using Xcode, the following variables have no effect:

CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_RELEASE

The _<CONFIG> variants of CMAKE_EXE_LINKER_FLAGS work correctly, as do the base variables CMAKE_MODULE_LINKER_FLAGS and CMAKE_SHARED_LINKER_FLAGS.
Suggested patch:

Index: Source/cmGlobalXCodeGenerator.cxx
===================================================================
--- Source/cmGlobalXCodeGenerator.cxx (revision 47381)
+++ Source/cmGlobalXCodeGenerator.cxx (working copy)
@@ -1714,30 +1714,26 @@
   buildSettings->AddAttribute
     ("GCC_PREPROCESSOR_DEFINITIONS", ppDefs.CreateList());
 
+ std::string extraLinkOptionsVar;
   std::string extraLinkOptions;
   if(target.GetType() == cmTarget::EXECUTABLE)
     {
- extraLinkOptions =
- this->CurrentMakefile->GetRequiredDefinition("CMAKE_EXE_LINKER_FLAGS");
- std::string var = "CMAKE_EXE_LINKER_FLAGS_";
- var += cmSystemTools::UpperCase(configName);
- std::string val =
- this->CurrentMakefile->GetSafeDefinition(var.c_str());
- if(val.size())
- {
- extraLinkOptions += " ";
- extraLinkOptions += val;
- }
+ extraLinkOptionsVar = "CMAKE_EXE_LINKER_FLAGS";
     }
- if(target.GetType() == cmTarget::SHARED_LIBRARY)
+ else if(target.GetType() == cmTarget::SHARED_LIBRARY)
     {
- extraLinkOptions = this->CurrentMakefile->
- GetRequiredDefinition("CMAKE_SHARED_LINKER_FLAGS");
+ extraLinkOptionsVar = "CMAKE_SHARED_LINKER_FLAGS";
     }
- if(target.GetType() == cmTarget::MODULE_LIBRARY)
+ else if(target.GetType() == cmTarget::MODULE_LIBRARY)
     {
- extraLinkOptions = this->CurrentMakefile->
- GetRequiredDefinition("CMAKE_MODULE_LINKER_FLAGS");
+ extraLinkOptionsVar = "CMAKE_MODULE_LINKER_FLAGS";
+ }
+
+ if (extraLinkOptionsVar.size())
+ {
+ this->CurrentLocalGenerator->AddConfigVariableFlags(extraLinkOptions,
+ extraLinkOptionsVar.c_str(),
+ configName);
     }
 
   const char* linkFlagsProp = "LINK_FLAGS";
No tags attached.
Issue History
2013-05-22 08:44Matthew BenthamNew Issue
2013-05-22 11:46Brad KingAssigned To => Brad King
2013-05-22 11:46Brad KingStatusnew => assigned
2013-05-22 11:46Brad KingTarget Version => CMake 2.8.12
2013-05-22 13:10Brad KingNote Added: 0033111
2013-05-22 13:10Brad KingStatusassigned => resolved
2013-05-22 13:10Brad KingResolutionopen => fixed
2013-05-22 13:10Brad KingFixed in Version => CMake 2.8.12
2013-10-07 10:09Robert MaynardNote Added: 0034054
2013-10-07 10:09Robert MaynardStatusresolved => closed

Notes
(0033111)
Brad King   
2013-05-22 13:10   
Patch applied, thanks!

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bcda47d2 [^]
(0034054)
Robert Maynard   
2013-10-07 10:09   
Closing resolved issues that have not been updated in more than 4 months.