ENH: make sure things do not depend on optimized libraries if they are debug, and the other way around as well

This commit is contained in:
Bill Hoffman 2006-11-27 16:13:41 -05:00
parent 31a576abe6
commit f2e8fd06c2
2 changed files with 20 additions and 1 deletions

View File

@ -1136,7 +1136,13 @@ void cmMakefileTargetGenerator
{ {
return; 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. // Keep track of dependencies already listed.
std::set<cmStdString> emitted; std::set<cmStdString> emitted;
@ -1149,6 +1155,14 @@ void cmMakefileTargetGenerator
for(cmTarget::LinkLibraryVectorType::const_iterator lib = tlibs.begin(); for(cmTarget::LinkLibraryVectorType::const_iterator lib = tlibs.begin();
lib != tlibs.end(); ++lib) 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. // Don't emit the same library twice for this target.
if(emitted.insert(lib->first).second) if(emitted.insert(lib->first).second)
{ {

View File

@ -10,3 +10,8 @@ add_library (simpleLib STATIC
) )
target_link_libraries (simple simpleLib) 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)