summaryrefslogtreecommitdiffstats
path: root/Source/cmVisualStudio10TargetGenerator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmVisualStudio10TargetGenerator.cxx')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx258
1 files changed, 127 insertions, 131 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index d99f084..cfdf2d8 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -77,23 +77,14 @@ struct cmVisualStudio10TargetGenerator::Elem
this->WriteString("<") << tag;
return *this;
}
- template <typename T>
- void WriteElem(const char* tag, const T& val)
- {
- this->WriteString("<") << tag << ">" << val << "</" << tag << ">\n";
- }
void Element(const char* tag, const std::string& val)
{
- Elem(*this).WriteElem(tag, cmVS10EscapeXML(val));
- }
- template <typename T>
- void Attr(const char* an, const T& av)
- {
- this->S << " " << an << "=\"" << av << "\"";
+ Elem(*this).WriteString("<") << tag << ">" << cmVS10EscapeXML(val) << "</"
+ << tag << ">\n";
}
Elem& Attribute(const char* an, const std::string& av)
{
- Attr(an, cmVS10EscapeAttr(av));
+ this->S << " " << an << "=\"" << cmVS10EscapeAttr(av) << "\"";
return *this;
}
// This method for now assumes that this->Tag has been set, e.g. by calling
@@ -117,6 +108,7 @@ struct cmVisualStudio10TargetGenerator::Elem
class cmVS10GeneratorOptions : public cmVisualStudioGeneratorOptions
{
public:
+ typedef cmVisualStudio10TargetGenerator::Elem Elem;
cmVS10GeneratorOptions(cmLocalVisualStudioGenerator* lg, Tool tool,
cmVS7FlagTable const* table,
cmVisualStudio10TargetGenerator* g = nullptr)
@@ -125,48 +117,50 @@ public:
{
}
- void OutputFlag(std::ostream& fout, int indent, const char* tag,
+ void OutputFlag(std::ostream& /*fout*/, int /*indent*/, const char* tag,
const std::string& content) override
{
if (!this->GetConfiguration().empty()) {
// if there are configuration specific flags, then
// use the configuration specific tag for PreprocessorDefinitions
this->TargetGenerator->WritePlatformConfigTag(
- tag, this->GetConfiguration(), indent, content);
+ tag, this->GetConfiguration(), *Parent, content);
} else {
- fout.fill(' ');
- fout.width(indent * 2);
- // write an empty string to get the fill level indent to print
- fout << "";
- fout << "<" << tag << ">";
- fout << cmVS10EscapeXML(content);
- fout << "</" << tag << ">\n";
+ Parent->Element(tag, content);
}
}
private:
- cmVisualStudio10TargetGenerator* TargetGenerator;
+ cmVisualStudio10TargetGenerator* const TargetGenerator;
+ Elem* Parent = nullptr;
+ friend cmVisualStudio10TargetGenerator::OptionsHelper;
};
-inline void cmVisualStudio10TargetGenerator::WriteElem(const char* tag,
- const char* val,
- int indentLevel)
+struct cmVisualStudio10TargetGenerator::OptionsHelper
{
- Elem(*this->BuildFileStream, indentLevel).WriteElem(tag, val);
-}
-
-inline void cmVisualStudio10TargetGenerator::WriteElem(const char* tag,
- std::string const& val,
- int indentLevel)
-{
- Elem(*this->BuildFileStream, indentLevel).WriteElem(tag, val);
-}
+ cmVS10GeneratorOptions& O;
+ OptionsHelper(cmVS10GeneratorOptions& o, Elem& e)
+ : O(o)
+ {
+ O.Parent = &e;
+ }
+ ~OptionsHelper() { O.Parent = nullptr; }
-inline void cmVisualStudio10TargetGenerator::WriteElemEscapeXML(
- const char* tag, std::string const& val, int indentLevel)
-{
- this->WriteElem(tag, cmVS10EscapeXML(val), indentLevel);
-}
+ void OutputPreprocessorDefinitions(const std::string& lang)
+ {
+ O.OutputPreprocessorDefinitions(O.Parent->S, O.Parent->Indent + 1, lang);
+ }
+ void OutputAdditionalIncludeDirectories(const std::string& lang)
+ {
+ O.OutputAdditionalIncludeDirectories(O.Parent->S, O.Parent->Indent + 1,
+ lang);
+ }
+ void OutputFlagMap() { O.OutputFlagMap(O.Parent->S, O.Parent->Indent + 1); }
+ void PrependInheritedString(std::string const& key)
+ {
+ O.PrependInheritedString(key);
+ }
+};
static std::string cmVS10EscapeComment(std::string comment)
{
@@ -275,18 +269,12 @@ std::string cmVisualStudio10TargetGenerator::CalcCondition(
}
void cmVisualStudio10TargetGenerator::WritePlatformConfigTag(
- const char* tag, const std::string& config, int indentLevel,
+ const char* tag, const std::string& config, Elem& parent,
const std::string& content)
{
- std::ostream& stream = *this->BuildFileStream;
- stream.fill(' ');
- stream.width(indentLevel * 2);
- stream << ""; // applies indentation
- stream << "<" << tag << " Condition=\"";
- stream << this->CalcCondition(config);
- stream << "\"";
- stream << ">" << cmVS10EscapeXML(content);
- stream << "</" << tag << ">\n";
+ Elem(parent, tag)
+ .Attribute("Condition", this->CalcCondition(config))
+ .Content(content);
}
std::ostream& cmVisualStudio10TargetGenerator::Elem::WriteString(
@@ -333,6 +321,14 @@ void cmVisualStudio10TargetGenerator::Generate()
this->ProjectType = vcxproj;
this->Managed = false;
} else if (this->ProjectFileExtension == ".csproj") {
+ if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) {
+ std::string message = "The C# target \"" +
+ this->GeneratorTarget->GetName() +
+ "\" is of type STATIC_LIBRARY. This is discouraged (and may be "
+ "disabled in future). Make it a SHARED library instead.";
+ this->Makefile->IssueMessage(cmake::MessageType::DEPRECATION_WARNING,
+ message);
+ }
this->ProjectType = csproj;
this->Managed = true;
}
@@ -848,7 +844,7 @@ void cmVisualStudio10TargetGenerator::WriteEmbeddedResourceGroup(Elem& e0)
s = "$(RootNamespace).";
}
s += "%(Filename).resources";
- this->WritePlatformConfigTag("LogicalName", i, e2.Indent + 1, s);
+ this->WritePlatformConfigTag("LogicalName", i, e2, s);
}
} else {
std::string binDir = this->Makefile->GetCurrentBinaryDirectory();
@@ -1180,7 +1176,8 @@ void cmVisualStudio10TargetGenerator::WriteMSToolConfigurationValuesManaged(
e1.Element("StartProgram", outDir + assemblyName + ".exe");
}
- o.OutputFlagMap(e1.S, e1.Indent + 1);
+ OptionsHelper oh(o, e1);
+ oh.OutputFlagMap();
}
//----------------------------------------------------------------------------
@@ -2128,7 +2125,6 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
// use them
if (!flags.empty() || !options.empty() || !configDefines.empty() ||
!includes.empty() || compileAs || noWinRT) {
- e2.SetHasElements();
cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator;
cmIDEFlagTable const* flagtable = nullptr;
const std::string& srclang = source->GetLanguage();
@@ -2194,10 +2190,11 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
}
clOptions.AddIncludes(includeList);
clOptions.SetConfiguration(config);
- clOptions.PrependInheritedString("AdditionalOptions");
- clOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1, lang);
- clOptions.OutputFlagMap(e2.S, e2.Indent + 1);
- clOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, lang);
+ OptionsHelper oh(clOptions, e2);
+ oh.PrependInheritedString("AdditionalOptions");
+ oh.OutputAdditionalIncludeDirectories(lang);
+ oh.OutputFlagMap();
+ oh.OutputPreprocessorDefinitions(lang);
}
}
if (this->IsXamlSource(source->GetFullPath())) {
@@ -2251,7 +2248,7 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
for (std::string const& config : this->Configurations) {
if (ttype >= cmStateEnums::UTILITY) {
this->WritePlatformConfigTag(
- "IntDir", config, e1.Indent + 1,
+ "IntDir", config, e1,
"$(Platform)\\$(Configuration)\\$(ProjectName)\\");
} else {
std::string intermediateDir =
@@ -2272,68 +2269,67 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
ConvertToWindowsSlash(intermediateDir);
ConvertToWindowsSlash(outDir);
- this->WritePlatformConfigTag("OutDir", config, e1.Indent + 1, outDir);
+ this->WritePlatformConfigTag("OutDir", config, e1, outDir);
- this->WritePlatformConfigTag("IntDir", config, e1.Indent + 1,
- intermediateDir);
+ this->WritePlatformConfigTag("IntDir", config, e1, intermediateDir);
if (const char* sdkExecutableDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES")) {
- this->WritePlatformConfigTag("ExecutablePath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("ExecutablePath", config, e1,
sdkExecutableDirectories);
}
if (const char* sdkIncludeDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_INCLUDE_DIRECTORIES")) {
- this->WritePlatformConfigTag("IncludePath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("IncludePath", config, e1,
sdkIncludeDirectories);
}
if (const char* sdkReferenceDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_REFERENCE_DIRECTORIES")) {
- this->WritePlatformConfigTag("ReferencePath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("ReferencePath", config, e1,
sdkReferenceDirectories);
}
if (const char* sdkLibraryDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_LIBRARY_DIRECTORIES")) {
- this->WritePlatformConfigTag("LibraryPath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("LibraryPath", config, e1,
sdkLibraryDirectories);
}
if (const char* sdkLibraryWDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES")) {
- this->WritePlatformConfigTag("LibraryWPath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("LibraryWPath", config, e1,
sdkLibraryWDirectories);
}
if (const char* sdkSourceDirectories =
this->Makefile->GetDefinition("CMAKE_VS_SDK_SOURCE_DIRECTORIES")) {
- this->WritePlatformConfigTag("SourcePath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("SourcePath", config, e1,
sdkSourceDirectories);
}
if (const char* sdkExcludeDirectories = this->Makefile->GetDefinition(
"CMAKE_VS_SDK_EXCLUDE_DIRECTORIES")) {
- this->WritePlatformConfigTag("ExcludePath", config, e1.Indent + 1,
+ this->WritePlatformConfigTag("ExcludePath", config, e1,
sdkExcludeDirectories);
}
if (const char* workingDir = this->GeneratorTarget->GetProperty(
"VS_DEBUGGER_WORKING_DIRECTORY")) {
this->WritePlatformConfigTag("LocalDebuggerWorkingDirectory", config,
- e1.Indent + 1, workingDir);
+ e1, workingDir);
}
if (const char* debuggerCommand =
this->GeneratorTarget->GetProperty("VS_DEBUGGER_COMMAND")) {
- this->WritePlatformConfigTag("LocalDebuggerCommand", config,
- e1.Indent + 1, debuggerCommand);
+ this->WritePlatformConfigTag("LocalDebuggerCommand", config, e1,
+ debuggerCommand);
}
std::string name =
cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull);
- this->WritePlatformConfigTag("TargetName", config, e1.Indent + 1, name);
+ this->WritePlatformConfigTag("TargetName", config, e1, name);
std::string ext =
cmSystemTools::GetFilenameLastExtension(targetNameFull);
@@ -2342,7 +2338,7 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
// A single "." appears to be treated as an empty extension.
ext = ".";
}
- this->WritePlatformConfigTag("TargetExt", config, e1.Indent + 1, ext);
+ this->WritePlatformConfigTag("TargetExt", config, e1, ext);
this->OutputLinkIncremental(e1, config);
}
@@ -2368,12 +2364,12 @@ void cmVisualStudio10TargetGenerator::OutputLinkIncremental(
Options& linkOptions = *(this->LinkOptions[configName]);
const char* incremental = linkOptions.GetFlag("LinkIncremental");
- this->WritePlatformConfigTag("LinkIncremental", configName, e1.Indent + 1,
+ this->WritePlatformConfigTag("LinkIncremental", configName, e1,
(incremental ? incremental : "true"));
linkOptions.RemoveFlag("LinkIncremental");
const char* manifest = linkOptions.GetFlag("GenerateManifest");
- this->WritePlatformConfigTag("GenerateManifest", configName, e1.Indent + 1,
+ this->WritePlatformConfigTag("GenerateManifest", configName, e1,
(manifest ? manifest : "true"));
linkOptions.RemoveFlag("GenerateManifest");
@@ -2383,7 +2379,7 @@ void cmVisualStudio10TargetGenerator::OutputLinkIncremental(
for (const char** f = flags; *f; ++f) {
const char* flag = *f;
if (const char* value = linkOptions.GetFlag(flag)) {
- this->WritePlatformConfigTag(flag, configName, e1.Indent + 1, value);
+ this->WritePlatformConfigTag(flag, configName, e1, value);
linkOptions.RemoveFlag(flag);
}
}
@@ -2613,13 +2609,11 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
return;
}
Elem e2(e1, "ClCompile");
- e2.SetHasElements();
- clOptions.PrependInheritedString("AdditionalOptions");
- clOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1,
- this->LangForClCompile);
- clOptions.OutputFlagMap(e2.S, e2.Indent + 1);
- clOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1,
- this->LangForClCompile);
+ OptionsHelper oh(clOptions, e2);
+ oh.PrependInheritedString("AdditionalOptions");
+ oh.OutputAdditionalIncludeDirectories(this->LangForClCompile);
+ oh.OutputFlagMap();
+ oh.OutputPreprocessorDefinitions(this->LangForClCompile);
if (this->NsightTegra) {
if (const char* processMax =
@@ -2715,13 +2709,12 @@ void cmVisualStudio10TargetGenerator::WriteRCOptions(
return;
}
Elem e2(e1, "ResourceCompile");
- e2.SetHasElements();
- Options& rcOptions = *(this->RcOptions[configName]);
- rcOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, "RC");
- rcOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1, "RC");
+ OptionsHelper rcOptions(*(this->RcOptions[configName]), e2);
+ rcOptions.OutputPreprocessorDefinitions("RC");
+ rcOptions.OutputAdditionalIncludeDirectories("RC");
rcOptions.PrependInheritedString("AdditionalOptions");
- rcOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ rcOptions.OutputFlagMap();
e2.EndElement();
}
@@ -2864,13 +2857,12 @@ void cmVisualStudio10TargetGenerator::WriteCudaOptions(
return;
}
Elem e2(e1, "CudaCompile");
- e2.SetHasElements();
- Options& cudaOptions = *(this->CudaOptions[configName]);
- cudaOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1, "CUDA");
- cudaOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, "CUDA");
+ OptionsHelper cudaOptions(*(this->CudaOptions[configName]), e2);
+ cudaOptions.OutputAdditionalIncludeDirectories("CUDA");
+ cudaOptions.OutputPreprocessorDefinitions("CUDA");
cudaOptions.PrependInheritedString("AdditionalOptions");
- cudaOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ cudaOptions.OutputFlagMap();
e2.EndElement();
}
@@ -2938,9 +2930,8 @@ void cmVisualStudio10TargetGenerator::WriteCudaLinkOptions(
}
Elem e2(e1, "CudaLink");
- e2.SetHasElements();
- Options& cudaLinkOptions = *(this->CudaLinkOptions[configName]);
- cudaLinkOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ OptionsHelper cudaLinkOptions(*(this->CudaLinkOptions[configName]), e2);
+ cudaLinkOptions.OutputFlagMap();
e2.EndElement();
}
@@ -2988,17 +2979,15 @@ void cmVisualStudio10TargetGenerator::WriteMasmOptions(
return;
}
Elem e2(e1, "MASM");
- e2.SetHasElements();
// Preprocessor definitions and includes are shared with clOptions.
- Options& clOptions = *(this->ClOptions[configName]);
- clOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, "ASM_MASM");
+ OptionsHelper clOptions(*(this->ClOptions[configName]), e2);
+ clOptions.OutputPreprocessorDefinitions("ASM_MASM");
- Options& masmOptions = *(this->MasmOptions[configName]);
- masmOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1,
- "ASM_MASM");
+ OptionsHelper masmOptions(*(this->MasmOptions[configName]), e2);
+ masmOptions.OutputAdditionalIncludeDirectories("ASM_MASM");
masmOptions.PrependInheritedString("AdditionalOptions");
- masmOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ masmOptions.OutputFlagMap();
e2.EndElement();
}
@@ -3048,20 +3037,18 @@ void cmVisualStudio10TargetGenerator::WriteNasmOptions(
return;
}
Elem e2(e1, "NASM");
- e2.SetHasElements();
std::vector<std::string> includes =
this->GetIncludes(configName, "ASM_NASM");
- Options& nasmOptions = *(this->NasmOptions[configName]);
- nasmOptions.OutputAdditionalIncludeDirectories(e2.S, e2.Indent + 1,
- "ASM_NASM");
- nasmOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ OptionsHelper nasmOptions(*(this->NasmOptions[configName]), e2);
+ nasmOptions.OutputAdditionalIncludeDirectories("ASM_NASM");
+ nasmOptions.OutputFlagMap();
nasmOptions.PrependInheritedString("AdditionalOptions");
- nasmOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, "ASM_NASM");
+ nasmOptions.OutputPreprocessorDefinitions("ASM_NASM");
// Preprocessor definitions and includes are shared with clOptions.
- Options& clOptions = *(this->ClOptions[configName]);
- clOptions.OutputPreprocessorDefinitions(e2.S, e2.Indent + 1, "ASM_NASM");
+ OptionsHelper clOptions(*(this->ClOptions[configName]), e2);
+ clOptions.OutputPreprocessorDefinitions("ASM_NASM");
e2.EndElement();
}
@@ -3078,14 +3065,14 @@ void cmVisualStudio10TargetGenerator::WriteLibOptions(
libflags, cmSystemTools::UpperCase(config), this->GeneratorTarget);
if (!libflags.empty()) {
Elem e2(e1, "Lib");
- e2.SetHasElements();
cmGlobalVisualStudio10Generator* gg = this->GlobalGenerator;
cmVS10GeneratorOptions libOptions(this->LocalGenerator,
cmVisualStudioGeneratorOptions::Linker,
gg->GetLibFlagTable(), this);
libOptions.Parse(libflags.c_str());
- libOptions.PrependInheritedString("AdditionalOptions");
- libOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ OptionsHelper oh(libOptions, e2);
+ oh.PrependInheritedString("AdditionalOptions");
+ oh.OutputFlagMap();
e2.EndElement();
}
@@ -3515,13 +3502,12 @@ void cmVisualStudio10TargetGenerator::WriteLinkOptions(
if (this->ProjectType == csproj) {
return;
}
- Options& linkOptions = *(this->LinkOptions[config]);
{
Elem e2(e1, "Link");
- e2.SetHasElements();
+ OptionsHelper linkOptions(*(this->LinkOptions[config]), e2);
linkOptions.PrependInheritedString("AdditionalOptions");
- linkOptions.OutputFlagMap(e2.S, e2.Indent + 1);
+ linkOptions.OutputFlagMap();
e2.EndElement();
}
@@ -3804,18 +3790,24 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences(Elem& e0)
// If the dependency target is not managed (compiled with /clr or
// C# target) we cannot reference it and have to set
// 'ReferenceOutputAssembly' to false.
- cmGeneratorTarget::ManagedType check =
- cmGeneratorTarget::ManagedType::Mixed;
- // FIXME: These (5) lines should be removed. They are here to allow
- // manual setting of the /clr flag in compiler options. Setting
- // /clr manually makes cmGeneratorTarget::GetManagedType() return
- // 'Native' instead of 'Mixed' or 'Managed'.
- check = cmGeneratorTarget::ManagedType::Native;
- bool unmanagedStatic = false;
- if (dt->GetType() == cmStateEnums::STATIC_LIBRARY) {
- unmanagedStatic = !dt->HasLanguage("CSharp", "");
+ auto referenceNotManaged =
+ dt->GetManagedType("") < cmGeneratorTarget::ManagedType::Mixed;
+ // Workaround to check for manually set /clr flags.
+ if (referenceNotManaged) {
+ if (const auto* flags = dt->GetProperty("COMPILE_OPTIONS")) {
+ std::string flagsStr = flags;
+ if (flagsStr.find("clr") != std::string::npos) {
+ // There is a warning already issued when building the flags.
+ referenceNotManaged = false;
+ }
+ }
+ }
+ // Workaround for static library C# targets
+ if (referenceNotManaged &&
+ dt->GetType() == cmStateEnums::STATIC_LIBRARY) {
+ referenceNotManaged = !dt->HasLanguage("CSharp", "");
}
- if (dt->GetManagedType("") < check || unmanagedStatic) {
+ if (referenceNotManaged) {
e2.Element("ReferenceOutputAssembly", "false");
}
}
@@ -3965,6 +3957,7 @@ void cmVisualStudio10TargetGenerator::WriteWinRTPackageCertificateKeyFile(
pfxFile, false);
ConvertToWindowsSlash(pfxFile);
this->AddedFiles.push_back(pfxFile);
+ this->AddedDefaultCertificate = true;
}
e1.Element("PackageCertificateKeyFile", pfxFile);
@@ -4531,10 +4524,13 @@ void cmVisualStudio10TargetGenerator::WriteCommonMissingFiles(
Elem(e1, "Image").Attribute("Include", splashScreen).EndElement();
this->AddedFiles.push_back(splashScreen);
- // This file has already been added to the build so don't copy it
- std::string keyFile = this->DefaultArtifactDir + "/Windows_TemporaryKey.pfx";
- ConvertToWindowsSlash(keyFile);
- Elem(e1, "None").Attribute("Include", keyFile).EndElement();
+ if (this->AddedDefaultCertificate) {
+ // This file has already been added to the build so don't copy it
+ std::string keyFile =
+ this->DefaultArtifactDir + "/Windows_TemporaryKey.pfx";
+ ConvertToWindowsSlash(keyFile);
+ Elem(e1, "None").Attribute("Include", keyFile).EndElement();
+ }
}
bool cmVisualStudio10TargetGenerator::ForceOld(const std::string& source) const