VS6: Compute CMAKE_*_FLAGS and COMPILE_DEFINITIONS* only when needed
These placeholders are used only in the .dsp templates for targets that actually compile sources.
This commit is contained in:
parent
df5def5334
commit
4a0128f42f
@ -1701,15 +1701,15 @@ void cmLocalVisualStudio6Generator
|
|||||||
= this->Makefile->GetDefinition("CMAKE_DEBUG_POSTFIX");
|
= this->Makefile->GetDefinition("CMAKE_DEBUG_POSTFIX");
|
||||||
cmSystemTools::ReplaceString(line, "DEBUG_POSTFIX",
|
cmSystemTools::ReplaceString(line, "DEBUG_POSTFIX",
|
||||||
debugPostfix?debugPostfix:"");
|
debugPostfix?debugPostfix:"");
|
||||||
// store flags for each configuration
|
|
||||||
std::string flags = " ";
|
|
||||||
std::string flagsRelease = " ";
|
|
||||||
std::string flagsMinSizeRel = " ";
|
|
||||||
std::string flagsDebug = " ";
|
|
||||||
std::string flagsRelWithDebInfo = " ";
|
|
||||||
if(target.GetType() >= cmTarget::EXECUTABLE &&
|
if(target.GetType() >= cmTarget::EXECUTABLE &&
|
||||||
target.GetType() <= cmTarget::OBJECT_LIBRARY)
|
target.GetType() <= cmTarget::OBJECT_LIBRARY)
|
||||||
{
|
{
|
||||||
|
// store flags for each configuration
|
||||||
|
std::string flags = " ";
|
||||||
|
std::string flagsRelease = " ";
|
||||||
|
std::string flagsMinSizeRel = " ";
|
||||||
|
std::string flagsDebug = " ";
|
||||||
|
std::string flagsRelWithDebInfo = " ";
|
||||||
std::vector<std::string> configs;
|
std::vector<std::string> configs;
|
||||||
target.GetMakefile()->GetConfigurations(configs);
|
target.GetMakefile()->GetConfigurations(configs);
|
||||||
std::vector<std::string>::const_iterator it = configs.begin();
|
std::vector<std::string>::const_iterator it = configs.begin();
|
||||||
@ -1760,73 +1760,78 @@ void cmLocalVisualStudio6Generator
|
|||||||
"MinSizeRel");
|
"MinSizeRel");
|
||||||
this->AddCompileOptions(flagsRelWithDebInfo, &target, linkLanguage,
|
this->AddCompileOptions(flagsRelWithDebInfo, &target, linkLanguage,
|
||||||
"RelWithDebInfo");
|
"RelWithDebInfo");
|
||||||
|
|
||||||
|
// if _UNICODE and _SBCS are not found, then add -D_MBCS
|
||||||
|
std::string defs = this->Makefile->GetDefineFlags();
|
||||||
|
if(flags.find("D_UNICODE") == flags.npos &&
|
||||||
|
defs.find("D_UNICODE") == flags.npos &&
|
||||||
|
flags.find("D_SBCS") == flags.npos &&
|
||||||
|
defs.find("D_SBCS") == flags.npos)
|
||||||
|
{
|
||||||
|
flags += " /D \"_MBCS\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add per-target and per-configuration preprocessor definitions.
|
||||||
|
std::set<std::string> definesSet;
|
||||||
|
std::set<std::string> debugDefinesSet;
|
||||||
|
std::set<std::string> releaseDefinesSet;
|
||||||
|
std::set<std::string> minsizeDefinesSet;
|
||||||
|
std::set<std::string> debugrelDefinesSet;
|
||||||
|
|
||||||
|
this->AddCompileDefinitions(definesSet, &target, "");
|
||||||
|
this->AddCompileDefinitions(debugDefinesSet, &target,
|
||||||
|
"DEBUG");
|
||||||
|
this->AddCompileDefinitions(releaseDefinesSet, &target,
|
||||||
|
"RELEASE");
|
||||||
|
this->AddCompileDefinitions(minsizeDefinesSet, &target,
|
||||||
|
"MINSIZEREL");
|
||||||
|
this->AddCompileDefinitions(debugrelDefinesSet, &target,
|
||||||
|
"RELWITHDEBINFO");
|
||||||
|
|
||||||
|
std::string defines = " ";
|
||||||
|
std::string debugDefines = " ";
|
||||||
|
std::string releaseDefines = " ";
|
||||||
|
std::string minsizeDefines = " ";
|
||||||
|
std::string debugrelDefines = " ";
|
||||||
|
|
||||||
|
this->JoinDefines(definesSet, defines, "");
|
||||||
|
this->JoinDefines(debugDefinesSet, debugDefines, "");
|
||||||
|
this->JoinDefines(releaseDefinesSet, releaseDefines, "");
|
||||||
|
this->JoinDefines(minsizeDefinesSet, minsizeDefines, "");
|
||||||
|
this->JoinDefines(debugrelDefinesSet, debugrelDefines, "");
|
||||||
|
|
||||||
|
flags += defines;
|
||||||
|
flagsDebug += debugDefines;
|
||||||
|
flagsRelease += releaseDefines;
|
||||||
|
flagsMinSizeRel += minsizeDefines;
|
||||||
|
flagsRelWithDebInfo += debugrelDefines;
|
||||||
|
|
||||||
|
// The template files have CXX FLAGS in them, that need to be replaced.
|
||||||
|
// There are not separate CXX and C template files, so we use the same
|
||||||
|
// variable names. The previous code sets up flags* variables to
|
||||||
|
// contain the correct C or CXX flags
|
||||||
|
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_MINSIZEREL",
|
||||||
|
flagsMinSizeRel.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_DEBUG",
|
||||||
|
flagsDebug.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_RELWITHDEBINFO",
|
||||||
|
flagsRelWithDebInfo.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_RELEASE",
|
||||||
|
flagsRelease.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS", flags.c_str());
|
||||||
|
|
||||||
|
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_MINSIZEREL",
|
||||||
|
minsizeDefines.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_DEBUG",
|
||||||
|
debugDefines.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_RELWITHDEBINFO",
|
||||||
|
debugrelDefines.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_RELEASE",
|
||||||
|
releaseDefines.c_str());
|
||||||
|
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS",
|
||||||
|
defines.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// if _UNICODE and _SBCS are not found, then add -D_MBCS
|
|
||||||
std::string defs = this->Makefile->GetDefineFlags();
|
|
||||||
if(flags.find("D_UNICODE") == flags.npos &&
|
|
||||||
defs.find("D_UNICODE") == flags.npos &&
|
|
||||||
flags.find("D_SBCS") == flags.npos &&
|
|
||||||
defs.find("D_SBCS") == flags.npos)
|
|
||||||
{
|
|
||||||
flags += " /D \"_MBCS\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add per-target and per-configuration preprocessor definitions.
|
|
||||||
std::set<std::string> definesSet;
|
|
||||||
std::set<std::string> debugDefinesSet;
|
|
||||||
std::set<std::string> releaseDefinesSet;
|
|
||||||
std::set<std::string> minsizeDefinesSet;
|
|
||||||
std::set<std::string> debugrelDefinesSet;
|
|
||||||
|
|
||||||
this->AddCompileDefinitions(definesSet, &target, "");
|
|
||||||
this->AddCompileDefinitions(debugDefinesSet, &target, "DEBUG");
|
|
||||||
this->AddCompileDefinitions(releaseDefinesSet, &target, "RELEASE");
|
|
||||||
this->AddCompileDefinitions(minsizeDefinesSet, &target, "MINSIZEREL");
|
|
||||||
this->AddCompileDefinitions(debugrelDefinesSet, &target, "RELWITHDEBINFO");
|
|
||||||
|
|
||||||
std::string defines = " ";
|
|
||||||
std::string debugDefines = " ";
|
|
||||||
std::string releaseDefines = " ";
|
|
||||||
std::string minsizeDefines = " ";
|
|
||||||
std::string debugrelDefines = " ";
|
|
||||||
|
|
||||||
this->JoinDefines(definesSet, defines, "");
|
|
||||||
this->JoinDefines(debugDefinesSet, debugDefines, "");
|
|
||||||
this->JoinDefines(releaseDefinesSet, releaseDefines, "");
|
|
||||||
this->JoinDefines(minsizeDefinesSet, minsizeDefines, "");
|
|
||||||
this->JoinDefines(debugrelDefinesSet, debugrelDefines, "");
|
|
||||||
|
|
||||||
flags += defines;
|
|
||||||
flagsDebug += debugDefines;
|
|
||||||
flagsRelease += releaseDefines;
|
|
||||||
flagsMinSizeRel += minsizeDefines;
|
|
||||||
flagsRelWithDebInfo += debugrelDefines;
|
|
||||||
|
|
||||||
// The template files have CXX FLAGS in them, that need to be replaced.
|
|
||||||
// There are not separate CXX and C template files, so we use the same
|
|
||||||
// variable names. The previous code sets up flags* variables to contain
|
|
||||||
// the correct C or CXX flags
|
|
||||||
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_MINSIZEREL",
|
|
||||||
flagsMinSizeRel.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_DEBUG",
|
|
||||||
flagsDebug.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_RELWITHDEBINFO",
|
|
||||||
flagsRelWithDebInfo.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS_RELEASE",
|
|
||||||
flagsRelease.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "CMAKE_CXX_FLAGS", flags.c_str());
|
|
||||||
|
|
||||||
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_MINSIZEREL",
|
|
||||||
minsizeDefines.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_DEBUG",
|
|
||||||
debugDefines.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_RELWITHDEBINFO",
|
|
||||||
debugrelDefines.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS_RELEASE",
|
|
||||||
releaseDefines.c_str());
|
|
||||||
cmSystemTools::ReplaceString(line, "COMPILE_DEFINITIONS", defines.c_str());
|
|
||||||
|
|
||||||
fout << line.c_str() << std::endl;
|
fout << line.c_str() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user