mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 04:40:18 -05:00
VS: Add support for VS_DEBUGGER_* properties on custom targets
Visual studio itself supports the corresponding `LocalDebugger*` properties on utility targets; support generating them from CMake as well.
This commit is contained in:
@@ -2283,6 +2283,58 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
|
||||
e1.Element("_ProjectFileVersion", "10.0.20506.1");
|
||||
for (std::string const& config : this->Configurations) {
|
||||
const std::string cond = this->CalcCondition(config);
|
||||
|
||||
if (ttype <= cmStateEnums::UTILITY) {
|
||||
if (const char* workingDir = this->GeneratorTarget->GetProperty(
|
||||
"VS_DEBUGGER_WORKING_DIRECTORY")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(workingDir);
|
||||
std::string genWorkingDir =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerWorkingDirectory", cond,
|
||||
genWorkingDir);
|
||||
}
|
||||
|
||||
if (const char* environment =
|
||||
this->GeneratorTarget->GetProperty("VS_DEBUGGER_ENVIRONMENT")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(environment);
|
||||
std::string genEnvironment =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerEnvironment", cond,
|
||||
genEnvironment);
|
||||
}
|
||||
|
||||
if (const char* debuggerCommand =
|
||||
this->GeneratorTarget->GetProperty("VS_DEBUGGER_COMMAND")) {
|
||||
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(debuggerCommand);
|
||||
std::string genDebuggerCommand =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerCommand", cond,
|
||||
genDebuggerCommand);
|
||||
}
|
||||
|
||||
if (const char* commandArguments = this->GeneratorTarget->GetProperty(
|
||||
"VS_DEBUGGER_COMMAND_ARGUMENTS")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(commandArguments);
|
||||
std::string genCommandArguments =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerCommandArguments", cond,
|
||||
genCommandArguments);
|
||||
}
|
||||
}
|
||||
|
||||
if (ttype >= cmStateEnums::UTILITY) {
|
||||
e1.WritePlatformConfigTag(
|
||||
"IntDir", cond, "$(Platform)\\$(Configuration)\\$(ProjectName)\\");
|
||||
@@ -2347,55 +2399,6 @@ void cmVisualStudio10TargetGenerator::WritePathAndIncrementalLinkOptions(
|
||||
e1.WritePlatformConfigTag("ExcludePath", cond, sdkExcludeDirectories);
|
||||
}
|
||||
|
||||
if (const char* workingDir = this->GeneratorTarget->GetProperty(
|
||||
"VS_DEBUGGER_WORKING_DIRECTORY")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(workingDir);
|
||||
std::string genWorkingDir =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerWorkingDirectory", cond,
|
||||
genWorkingDir);
|
||||
}
|
||||
|
||||
if (const char* environment =
|
||||
this->GeneratorTarget->GetProperty("VS_DEBUGGER_ENVIRONMENT")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(environment);
|
||||
std::string genEnvironment =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerEnvironment", cond,
|
||||
genEnvironment);
|
||||
}
|
||||
|
||||
if (const char* debuggerCommand =
|
||||
this->GeneratorTarget->GetProperty("VS_DEBUGGER_COMMAND")) {
|
||||
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(debuggerCommand);
|
||||
std::string genDebuggerCommand =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerCommand", cond,
|
||||
genDebuggerCommand);
|
||||
}
|
||||
|
||||
if (const char* commandArguments = this->GeneratorTarget->GetProperty(
|
||||
"VS_DEBUGGER_COMMAND_ARGUMENTS")) {
|
||||
cmGeneratorExpression ge;
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(commandArguments);
|
||||
std::string genCommandArguments =
|
||||
cge->Evaluate(this->LocalGenerator, config);
|
||||
|
||||
e1.WritePlatformConfigTag("LocalDebuggerCommandArguments", cond,
|
||||
genCommandArguments);
|
||||
}
|
||||
|
||||
std::string name =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull);
|
||||
e1.WritePlatformConfigTag("TargetName", cond, name);
|
||||
|
||||
Reference in New Issue
Block a user