diff options
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 16 | ||||
-rw-r--r-- | Tests/Simple/CMakeLists.txt | 5 |
2 files changed, 20 insertions, 1 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index 381df2e..1adff5c 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -1136,7 +1136,13 @@ void cmMakefileTargetGenerator { return; } - + // Compute which library configuration to link. + cmTarget::LinkLibraryType linkType = cmTarget::OPTIMIZED; + if(cmSystemTools::UpperCase( + this->LocalGenerator->ConfigurationName.c_str()) == "DEBUG") + { + linkType = cmTarget::DEBUG; + } // Keep track of dependencies already listed. std::set<cmStdString> emitted; @@ -1149,6 +1155,14 @@ void cmMakefileTargetGenerator for(cmTarget::LinkLibraryVectorType::const_iterator lib = tlibs.begin(); lib != tlibs.end(); ++lib) { + // skip the library if it is not general and the link type + // does not match the current target + if(lib->second != cmTarget::GENERAL && + lib->second != linkType) + { + continue; + } + // Don't emit the same library twice for this target. if(emitted.insert(lib->first).second) { diff --git a/Tests/Simple/CMakeLists.txt b/Tests/Simple/CMakeLists.txt index 13abefe..c098224 100644 --- a/Tests/Simple/CMakeLists.txt +++ b/Tests/Simple/CMakeLists.txt @@ -10,3 +10,8 @@ add_library (simpleLib STATIC ) target_link_libraries (simple simpleLib) + +# make sure optimized libs are not used by debug builds +if(CMAKE_BUILD_TYPE MATCHES Debug) + target_link_libraries(simple optimized c:/not/here.lib ) +endif(CMAKE_BUILD_TYPE MATCHES Debug) |