mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-25 15:49:08 -05:00
Merge topic 'extend-compile-language-genex'
506fda1cGenex: Enable COMPILE_LANGUAGE for INCLUDE_DIRECTORIES with VS and Xcodec2f79c98Genex: Enable COMPILE_LANGUAGE for COMPILE_DEFINITIONS with VS and Xcode0795d25bcmVisualStudio10TargetGenerator: Factor out include dir computation1ab4d186cmLocalVisualStudio7Generator: Clarify variable name of compiled language07e1a743cmLocalVisualStudio7Generator: Clarify condition for target that compiles Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1657
This commit is contained in:
@@ -2319,6 +2319,18 @@ void cmVisualStudio10TargetGenerator::OutputLinkIncremental(
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> cmVisualStudio10TargetGenerator::GetIncludes(
|
||||
std::string const& config, std::string const& lang) const
|
||||
{
|
||||
std::vector<std::string> includes;
|
||||
this->LocalGenerator->GetIncludeDirectories(includes, this->GeneratorTarget,
|
||||
lang, config);
|
||||
for (std::string& i : includes) {
|
||||
this->ConvertToWindowsSlash(i);
|
||||
}
|
||||
return includes;
|
||||
}
|
||||
|
||||
bool cmVisualStudio10TargetGenerator::ComputeClOptions()
|
||||
{
|
||||
for (std::string const& i : this->Configurations) {
|
||||
@@ -2379,6 +2391,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
|
||||
}
|
||||
}
|
||||
}
|
||||
this->LangForClCompile = langForClCompile;
|
||||
if (!langForClCompile.empty()) {
|
||||
std::string baseFlagVar = "CMAKE_";
|
||||
baseFlagVar += langForClCompile;
|
||||
@@ -2422,8 +2435,10 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
|
||||
std::vector<std::string> targetDefines;
|
||||
switch (this->ProjectType) {
|
||||
case vcxproj:
|
||||
this->GeneratorTarget->GetCompileDefinitions(targetDefines, configName,
|
||||
"CXX");
|
||||
if (!langForClCompile.empty()) {
|
||||
this->GeneratorTarget->GetCompileDefinitions(targetDefines, configName,
|
||||
langForClCompile);
|
||||
}
|
||||
break;
|
||||
case csproj:
|
||||
this->GeneratorTarget->GetCompileDefinitions(targetDefines, configName,
|
||||
@@ -2487,7 +2502,7 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteClOptions(
|
||||
std::string const& configName, std::vector<std::string> const& includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
Options& clOptions = *(this->ClOptions[configName]);
|
||||
if (this->ProjectType == csproj) {
|
||||
@@ -2495,12 +2510,16 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
|
||||
}
|
||||
this->WriteString("<ClCompile>\n", 2);
|
||||
clOptions.PrependInheritedString("AdditionalOptions");
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
if (!this->LangForClCompile.empty()) {
|
||||
std::vector<std::string> const includes =
|
||||
this->GetIncludes(configName, this->LangForClCompile);
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
}
|
||||
clOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
clOptions.OutputFlagMap(*this->BuildFileStream, " ");
|
||||
clOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "CXX");
|
||||
"\n", this->LangForClCompile);
|
||||
|
||||
if (this->NsightTegra) {
|
||||
if (const char* processMax =
|
||||
@@ -2581,7 +2600,7 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteRCOptions(
|
||||
std::string const& configName, std::vector<std::string> const& includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
if (!this->MSTools) {
|
||||
return;
|
||||
@@ -2591,6 +2610,8 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
|
||||
Options& rcOptions = *(this->RcOptions[configName]);
|
||||
rcOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
"\n", "RC");
|
||||
std::vector<std::string> const includes =
|
||||
this->GetIncludes(configName, "RC");
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories", includes);
|
||||
rcOptions.AppendFlag("AdditionalIncludeDirectories",
|
||||
"%(AdditionalIncludeDirectories)");
|
||||
@@ -2701,7 +2722,7 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteCudaOptions(
|
||||
std::string const& configName, std::vector<std::string> const& includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
if (!this->MSTools || !this->GlobalGenerator->IsCudaEnabled()) {
|
||||
return;
|
||||
@@ -2709,6 +2730,8 @@ void cmVisualStudio10TargetGenerator::WriteCudaOptions(
|
||||
this->WriteString("<CudaCompile>\n", 2);
|
||||
|
||||
Options& cudaOptions = *(this->CudaOptions[configName]);
|
||||
std::vector<std::string> const includes =
|
||||
this->GetIncludes(configName, "CUDA");
|
||||
cudaOptions.AppendFlag("Include", includes);
|
||||
cudaOptions.AppendFlag("Include", "%(Include)");
|
||||
cudaOptions.OutputPreprocessorDefinitions(*this->BuildFileStream, " ",
|
||||
@@ -2823,7 +2846,7 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteMasmOptions(
|
||||
std::string const& configName, std::vector<std::string> const& includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
if (!this->MSTools || !this->GlobalGenerator->IsMasmEnabled()) {
|
||||
return;
|
||||
@@ -2836,6 +2859,8 @@ void cmVisualStudio10TargetGenerator::WriteMasmOptions(
|
||||
"\n", "ASM_MASM");
|
||||
|
||||
Options& masmOptions = *(this->MasmOptions[configName]);
|
||||
std::vector<std::string> const includes =
|
||||
this->GetIncludes(configName, "ASM_MASM");
|
||||
masmOptions.AppendFlag("IncludePaths", includes);
|
||||
masmOptions.AppendFlag("IncludePaths", "%(IncludePaths)");
|
||||
masmOptions.PrependInheritedString("AdditionalOptions");
|
||||
@@ -2880,13 +2905,15 @@ bool cmVisualStudio10TargetGenerator::ComputeNasmOptions(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteNasmOptions(
|
||||
std::string const& configName, std::vector<std::string> includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
if (!this->GlobalGenerator->IsNasmEnabled()) {
|
||||
return;
|
||||
}
|
||||
this->WriteString("<NASM>\n", 2);
|
||||
|
||||
std::vector<std::string> includes =
|
||||
this->GetIncludes(configName, "ASM_NASM");
|
||||
Options& nasmOptions = *(this->NasmOptions[configName]);
|
||||
for (size_t i = 0; i < includes.size(); i++) {
|
||||
includes[i] += "\\";
|
||||
@@ -3434,7 +3461,7 @@ void cmVisualStudio10TargetGenerator::AddTargetsFileAndConfigPair(
|
||||
}
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteMidlOptions(
|
||||
std::string const& /*config*/, std::vector<std::string> const& includes)
|
||||
std::string const& configName)
|
||||
{
|
||||
if (!this->MSTools) {
|
||||
return;
|
||||
@@ -3460,6 +3487,8 @@ void cmVisualStudio10TargetGenerator::WriteMidlOptions(
|
||||
// on the CMake side?
|
||||
this->WriteString("<Midl>\n", 2);
|
||||
this->WriteString("<AdditionalIncludeDirectories>", 3);
|
||||
std::vector<std::string> const includes =
|
||||
this->GetIncludes(configName, "MIDL");
|
||||
for (std::string const& i : includes) {
|
||||
*this->BuildFileStream << cmVS10EscapeXML(i) << ";";
|
||||
}
|
||||
@@ -3484,25 +3513,19 @@ void cmVisualStudio10TargetGenerator::WriteItemDefinitionGroups()
|
||||
return;
|
||||
}
|
||||
for (std::string const& i : this->Configurations) {
|
||||
std::vector<std::string> includes;
|
||||
this->LocalGenerator->GetIncludeDirectories(includes,
|
||||
this->GeneratorTarget, "C", i);
|
||||
for (std::string& ii : includes) {
|
||||
this->ConvertToWindowsSlash(ii);
|
||||
}
|
||||
this->WritePlatformConfigTag("ItemDefinitionGroup", i, 1);
|
||||
*this->BuildFileStream << "\n";
|
||||
// output cl compile flags <ClCompile></ClCompile>
|
||||
if (this->GeneratorTarget->GetType() <= cmStateEnums::OBJECT_LIBRARY) {
|
||||
this->WriteClOptions(i, includes);
|
||||
this->WriteClOptions(i);
|
||||
// output rc compile flags <ResourceCompile></ResourceCompile>
|
||||
this->WriteRCOptions(i, includes);
|
||||
this->WriteCudaOptions(i, includes);
|
||||
this->WriteMasmOptions(i, includes);
|
||||
this->WriteNasmOptions(i, includes);
|
||||
this->WriteRCOptions(i);
|
||||
this->WriteCudaOptions(i);
|
||||
this->WriteMasmOptions(i);
|
||||
this->WriteNasmOptions(i);
|
||||
}
|
||||
// output midl flags <Midl></Midl>
|
||||
this->WriteMidlOptions(i, includes);
|
||||
this->WriteMidlOptions(i);
|
||||
// write events
|
||||
if (this->ProjectType != csproj) {
|
||||
this->WriteEvents(i);
|
||||
|
||||
Reference in New Issue
Block a user