mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
VS: Place per-source preprocessor definitions after target-wide ones
When the VS 2010+ generators were first implemented in commit 7491f52992
(ENH: first pass at VS 10, can bootstrap CMake, but many tests still
fail, 2009-06-25, v2.8.0~546), the per-source preprocessor definitions
were placed before target-wide preprocessor definitions for consistency
with the behavior of VS 9 2008 and below. However, those generators
are not used much anymore. Instead prefer consistency with the order
used by the Ninja and Makefile generators.
This commit is contained in:
7
Help/release/dev/compile-options-order.rst
Normal file
7
Help/release/dev/compile-options-order.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
compile-options-order
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
* The :ref:`Visual Studio Generators` for VS 2010 and above now place
|
||||||
|
per-source preprocessor definitions after target-wide preprocssor
|
||||||
|
definitions. This makes VS consistent with the :ref:`Ninja Generators`
|
||||||
|
and the :ref:`Makefile Generators`.
|
@@ -418,7 +418,9 @@ void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions(
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
const char* sep = "";
|
if (this->Version >= cmGlobalVisualStudioGenerator::VS10) {
|
||||||
|
oss << "%(" << tag << ")";
|
||||||
|
}
|
||||||
std::vector<std::string>::const_iterator de =
|
std::vector<std::string>::const_iterator de =
|
||||||
cmRemoveDuplicates(this->Defines);
|
cmRemoveDuplicates(this->Defines);
|
||||||
for (std::string const& di : cmMakeRange(this->Defines.cbegin(), de)) {
|
for (std::string const& di : cmMakeRange(this->Defines.cbegin(), de)) {
|
||||||
@@ -437,11 +439,7 @@ void cmVisualStudioGeneratorOptions::OutputPreprocessorDefinitions(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Store the flag in the project file.
|
// Store the flag in the project file.
|
||||||
oss << sep << define;
|
oss << ';' << define;
|
||||||
sep = ";";
|
|
||||||
}
|
|
||||||
if (this->Version >= cmGlobalVisualStudioGenerator::VS10) {
|
|
||||||
oss << ";%(" << tag << ")";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this->OutputFlag(fout, indent, tag, oss.str());
|
this->OutputFlag(fout, indent, tag, oss.str());
|
||||||
|
Reference in New Issue
Block a user