mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-12 09:20:41 -06:00
@@ -907,16 +907,6 @@ void cmVisualStudio10TargetGenerator::WriteSdkStyleProjectFile(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->HasCustomCommandsSource()) {
|
|
||||||
std::string message = cmStrCat(
|
|
||||||
"The target \"", this->GeneratorTarget->GetName(),
|
|
||||||
"\" does not currently support add_custom_command as the Visual Studio "
|
|
||||||
"generators have not yet learned how to generate custom commands in "
|
|
||||||
".Net SDK-style projects.");
|
|
||||||
this->Makefile->IssueMessage(MessageType::FATAL_ERROR, message);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Elem e0(BuildFileStream, "Project");
|
Elem e0(BuildFileStream, "Project");
|
||||||
e0.Attribute("Sdk", *this->GeneratorTarget->GetProperty("DOTNET_SDK"));
|
e0.Attribute("Sdk", *this->GeneratorTarget->GetProperty("DOTNET_SDK"));
|
||||||
|
|
||||||
@@ -1016,6 +1006,7 @@ void cmVisualStudio10TargetGenerator::WriteSdkStyleProjectFile(
|
|||||||
}
|
}
|
||||||
|
|
||||||
this->WriteDotNetDocumentationFile(e0);
|
this->WriteDotNetDocumentationFile(e0);
|
||||||
|
this->WriteCustomCommands(e0);
|
||||||
this->WriteAllSources(e0);
|
this->WriteAllSources(e0);
|
||||||
this->WriteEmbeddedResourceGroup(e0);
|
this->WriteEmbeddedResourceGroup(e0);
|
||||||
this->WriteXamlFilesGroup(e0);
|
this->WriteXamlFilesGroup(e0);
|
||||||
@@ -1077,15 +1068,6 @@ void cmVisualStudio10TargetGenerator::WriteCommonPropertyGroupGlobals(Elem& e1)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cmVisualStudio10TargetGenerator::HasCustomCommandsSource() const
|
|
||||||
{
|
|
||||||
auto const& config_sources = this->GeneratorTarget->GetAllConfigSources();
|
|
||||||
return std::any_of(config_sources.begin(), config_sources.end(),
|
|
||||||
[](cmGeneratorTarget::AllConfigSource const& si) {
|
|
||||||
return si.Source->GetCustomCommand();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void cmVisualStudio10TargetGenerator::WritePackageReferences(Elem& e0)
|
void cmVisualStudio10TargetGenerator::WritePackageReferences(Elem& e0)
|
||||||
{
|
{
|
||||||
std::vector<std::string> packageReferences =
|
std::vector<std::string> packageReferences =
|
||||||
@@ -1843,6 +1825,15 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule(
|
|||||||
symbolic = sf->GetPropertyAsBool("SYMBOLIC");
|
symbolic = sf->GetPropertyAsBool("SYMBOLIC");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Without UpToDateCheckInput VS will ignore the dependency files
|
||||||
|
// when doing it's fast up-to-date check and the command will not run
|
||||||
|
if (this->ProjectType == VsProjectType::csproj &&
|
||||||
|
this->GeneratorTarget->IsDotNetSdkTarget()) {
|
||||||
|
Elem e1(e0, "ItemGroup");
|
||||||
|
Elem e2(e1, "UpToDateCheckInput");
|
||||||
|
e2.Attribute("Include", dep);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this->ProjectType != VsProjectType::csproj) {
|
if (this->ProjectType != VsProjectType::csproj) {
|
||||||
@@ -1936,10 +1927,16 @@ void cmVisualStudio10TargetGenerator::WriteCustomRuleCSharp(
|
|||||||
}
|
}
|
||||||
this->CSharpCustomCommandNames.insert(name);
|
this->CSharpCustomCommandNames.insert(name);
|
||||||
Elem e1(e0, "Target");
|
Elem e1(e0, "Target");
|
||||||
e1.Attribute("Condition", this->CalcCondition(config));
|
e1.Attribute("Condition", cmStrCat("'$(Configuration)' == '", config, '\''));
|
||||||
e1.S << "\n Name=\"" << name << "\"";
|
e1.S << "\n Name=\"" << name << "\"";
|
||||||
e1.S << "\n Inputs=\"" << cmVS10EscapeAttr(inputs) << "\"";
|
e1.S << "\n Inputs=\"" << cmVS10EscapeAttr(inputs) << "\"";
|
||||||
e1.S << "\n Outputs=\"" << cmVS10EscapeAttr(outputs) << "\"";
|
e1.S << "\n Outputs=\"" << cmVS10EscapeAttr(outputs) << "\"";
|
||||||
|
|
||||||
|
// Run before sources are compiled...
|
||||||
|
e1.S << "\n BeforeTargets=\"CoreCompile\""; // BeforeBuild
|
||||||
|
// ...but after output directory has been created
|
||||||
|
e1.S << "\n DependsOnTargets=\"PrepareForBuild\"";
|
||||||
|
|
||||||
if (!comment.empty()) {
|
if (!comment.empty()) {
|
||||||
Elem(e1, "Exec").Attribute("Command", cmStrCat("echo ", comment));
|
Elem(e1, "Exec").Attribute("Command", cmStrCat("echo ", comment));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -289,8 +289,6 @@ private:
|
|||||||
void WriteCommonPropertyGroupGlobals(
|
void WriteCommonPropertyGroupGlobals(
|
||||||
cmVisualStudio10TargetGenerator::Elem& e1);
|
cmVisualStudio10TargetGenerator::Elem& e1);
|
||||||
|
|
||||||
bool HasCustomCommandsSource() const;
|
|
||||||
|
|
||||||
std::unordered_map<std::string, ConfigToSettings> ParsedToolTargetSettings;
|
std::unordered_map<std::string, ConfigToSettings> ParsedToolTargetSettings;
|
||||||
bool PropertyIsSameInAllConfigs(const ConfigToSettings& toolSettings,
|
bool PropertyIsSameInAllConfigs(const ConfigToSettings& toolSettings,
|
||||||
const std::string& propName);
|
const std::string& propName);
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
cmake_policy(SET CMP0053 NEW)
|
cmake_policy(SET CMP0053 NEW)
|
||||||
include(RunCMake)
|
include(RunCMake)
|
||||||
|
|
||||||
run_cmake(VsDotnetSdkCustomCommandsSource)
|
|
||||||
run_cmake(VsDotnetSdkStartupObject)
|
run_cmake(VsDotnetSdkStartupObject)
|
||||||
run_cmake(VsDotnetSdkDefines)
|
run_cmake(VsDotnetSdkDefines)
|
||||||
run_cmake(DotnetSdkVariables)
|
run_cmake(DotnetSdkVariables)
|
||||||
@@ -30,3 +29,4 @@ endfunction()
|
|||||||
|
|
||||||
runCmakeAndBuild(VsDotnetSdkCustomCommandsTarget)
|
runCmakeAndBuild(VsDotnetSdkCustomCommandsTarget)
|
||||||
runCmakeAndBuild(VsDotnetSdkNugetRestore)
|
runCmakeAndBuild(VsDotnetSdkNugetRestore)
|
||||||
|
runCmakeAndBuild(VsDotnetSdkCustomCommandsSource)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Generating bar.cs
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
CMake Error in CMakeLists.txt:
|
|
||||||
The target "foo" does not currently support add_custom_command as the
|
|
||||||
Visual Studio generators have not yet learned how to generate custom
|
|
||||||
commands in .Net SDK-style projects.
|
|
||||||
|
|
||||||
|
|
||||||
CMake Generate step failed. Build files cannot be regenerated correctly.
|
|
||||||
@@ -7,9 +7,8 @@ endif()
|
|||||||
set(CMAKE_DOTNET_SDK "Microsoft.NET.Sdk")
|
set(CMAKE_DOTNET_SDK "Microsoft.NET.Sdk")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT bar.cs
|
OUTPUT bar.cs
|
||||||
COMMAND copy /A ${CMAKE_CURRENT_SOURCE_DIR}/lib1.cs
|
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/lib1.cs" bar.cs
|
||||||
bar.cs
|
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/lib1.cs"
|
||||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/lib1.cs
|
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
|
|
||||||
add_library(foo SHARED bar.cs)
|
add_library(foo SHARED bar.cs)
|
||||||
|
|||||||
Reference in New Issue
Block a user