VS: Place source-specific AdditionalOptions after target-wide flags

Flags specified in the `COMPILE_FLAGS` source-file property should
be placed after those in target-wide properties so that those on
individual source files can override those on the whole target.
This is already done by most generators but was not implemented
correctly for VS 2010 and above.

Closes: #16400
This commit is contained in:
Brad King
2016-11-02 13:08:14 -04:00
parent ab2ae4823c
commit 4cb5d3353f
2 changed files with 12 additions and 2 deletions

View File

@@ -0,0 +1,9 @@
vs-flag-order
-------------
* The :ref:`Visual Studio Generators` for VS 2010 and above now place
per-source file flags after target-wide flags when they are classified
as raw flags with no project file setting (``AdditionalOptions``).
This behavior is more consistent with the ordering of flags produced
by other generators, and allows flags on more-specific properties
(per-source) to override those on more general ones (per-target).

View File

@@ -334,8 +334,9 @@ void cmVisualStudioGeneratorOptions::OutputAdditionalOptions(
} else {
fout << "<AdditionalOptions>";
}
fout << cmVisualStudio10GeneratorOptionsEscapeForXML(this->FlagString)
<< " %(AdditionalOptions)</AdditionalOptions>\n";
fout << "%(AdditionalOptions) "
<< cmVisualStudio10GeneratorOptionsEscapeForXML(this->FlagString)
<< "</AdditionalOptions>\n";
} else {
fout << prefix << "AdditionalOptions=\"";
fout << cmVisualStudioGeneratorOptionsEscapeForXML(this->FlagString);