|
|
@@ -877,6 +877,32 @@ void cmLocalGenerator::AddCompileOptions(std::string& flags,
|
|
|
}
|
|
|
}
|
|
|
this->AddCompilerRequirementFlag(flags, target, lang);
|
|
|
+
|
|
|
+ // Add compile flag for the MSVC compiler only.
|
|
|
+ cmMakefile* mf = this->GetMakefile();
|
|
|
+ if (const char* jmc =
|
|
|
+ mf->GetDefinition("CMAKE_" + lang + "_COMPILE_OPTIONS_JMC")) {
|
|
|
+
|
|
|
+ // Handle Just My Code debugging flags, /JMC.
|
|
|
+ // If the target is a Managed C++ one, /JMC is not compatible.
|
|
|
+ if (target->GetManagedType(config) !=
|
|
|
+ cmGeneratorTarget::ManagedType::Managed) {
|
|
|
+ // add /JMC flags if target property VS_JUST_MY_CODE_DEBUGGING is set
|
|
|
+ // to ON
|
|
|
+ if (char const* jmcExprGen =
|
|
|
+ target->GetProperty("VS_JUST_MY_CODE_DEBUGGING")) {
|
|
|
+ cmGeneratorExpression ge;
|
|
|
+ std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
|
|
+ ge.Parse(jmcExprGen);
|
|
|
+ std::string isJMCEnabled = cge->Evaluate(this, config);
|
|
|
+ if (cmSystemTools::IsOn(isJMCEnabled)) {
|
|
|
+ std::vector<std::string> optVec;
|
|
|
+ cmSystemTools::ExpandListArgument(jmc, optVec);
|
|
|
+ this->AppendCompileOptions(flags, optVec);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
std::vector<BT<std::string>> cmLocalGenerator::GetIncludeDirectoriesImplicit(
|