mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-12 09:08:58 -05:00
cmTarget::GetProperty: return cmProp
This commit is contained in:
@@ -23,6 +23,8 @@
|
||||
|
||||
class cmListFileBacktrace;
|
||||
|
||||
using cmProp = const std::string*;
|
||||
|
||||
static void FinalAction(cmMakefile& makefile, std::string const& filename,
|
||||
bool append)
|
||||
{
|
||||
@@ -95,8 +97,8 @@ static void FinalAction(cmMakefile& makefile, std::string const& filename,
|
||||
// Handle simple output name changes. This command is
|
||||
// deprecated so we do not support full target name
|
||||
// translation (which requires per-configuration info).
|
||||
if (const char* outname = libtgt->GetProperty("OUTPUT_NAME")) {
|
||||
lib = outname;
|
||||
if (cmProp outname = libtgt->GetProperty("OUTPUT_NAME")) {
|
||||
lib = *outname;
|
||||
}
|
||||
}
|
||||
valueOld += lib;
|
||||
|
||||
@@ -907,8 +907,8 @@ static const struct ConfigurationTestNode : public cmGeneratorExpressionNode
|
||||
}
|
||||
|
||||
if (context->CurrentTarget && context->CurrentTarget->IsImported()) {
|
||||
const char* loc = nullptr;
|
||||
const char* imp = nullptr;
|
||||
cmProp loc = nullptr;
|
||||
cmProp imp = nullptr;
|
||||
std::string suffix;
|
||||
if (context->CurrentTarget->Target->GetMappedConfig(context->Config, loc,
|
||||
imp, suffix)) {
|
||||
@@ -1565,11 +1565,11 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode
|
||||
std::vector<std::string> objects;
|
||||
|
||||
if (gt->IsImported()) {
|
||||
const char* loc = nullptr;
|
||||
const char* imp = nullptr;
|
||||
cmProp loc = nullptr;
|
||||
cmProp imp = nullptr;
|
||||
std::string suffix;
|
||||
if (gt->Target->GetMappedConfig(context->Config, loc, imp, suffix)) {
|
||||
cmExpandList(loc, objects);
|
||||
cmExpandList(*loc, objects);
|
||||
}
|
||||
context->HadContextSensitiveCondition = true;
|
||||
} else {
|
||||
|
||||
@@ -383,7 +383,8 @@ const char* cmGeneratorTarget::GetProperty(const std::string& prop) const
|
||||
if (cmSystemTools::GetFatalErrorOccured()) {
|
||||
return nullptr;
|
||||
}
|
||||
return this->Target->GetProperty(prop);
|
||||
cmProp retval = this->Target->GetProperty(prop);
|
||||
return retval ? retval->c_str() : nullptr;
|
||||
}
|
||||
|
||||
const char* cmGeneratorTarget::GetSafeProperty(const std::string& prop) const
|
||||
@@ -6349,8 +6350,8 @@ void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config,
|
||||
// Initialize members.
|
||||
info.NoSOName = false;
|
||||
|
||||
const char* loc = nullptr;
|
||||
const char* imp = nullptr;
|
||||
cmProp loc = nullptr;
|
||||
cmProp imp = nullptr;
|
||||
std::string suffix;
|
||||
if (!this->Target->GetMappedConfig(desired_config, loc, imp, suffix)) {
|
||||
return;
|
||||
@@ -6379,7 +6380,7 @@ void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config,
|
||||
}
|
||||
if (this->GetType() == cmStateEnums::INTERFACE_LIBRARY) {
|
||||
if (loc) {
|
||||
info.LibName = loc;
|
||||
info.LibName = *loc;
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -6389,7 +6390,7 @@ void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config,
|
||||
|
||||
// Get the location.
|
||||
if (loc) {
|
||||
info.Location = loc;
|
||||
info.Location = *loc;
|
||||
} else {
|
||||
std::string impProp = cmStrCat("IMPORTED_LOCATION", suffix);
|
||||
if (const char* config_location = this->GetProperty(impProp)) {
|
||||
@@ -6422,7 +6423,7 @@ void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config,
|
||||
|
||||
// Get the import library.
|
||||
if (imp) {
|
||||
info.ImportLibrary = imp;
|
||||
info.ImportLibrary = *imp;
|
||||
} else if (this->GetType() == cmStateEnums::SHARED_LIBRARY ||
|
||||
this->IsExecutableWithExports()) {
|
||||
std::string impProp = cmStrCat("IMPORTED_IMPLIB", suffix);
|
||||
|
||||
@@ -310,7 +310,7 @@ bool HandleTargetMode(cmExecutionStatus& status, const std::string& name,
|
||||
}
|
||||
return StoreResult(infoType, status.GetMakefile(), variable, nullptr);
|
||||
}
|
||||
const char* prop_cstr = nullptr;
|
||||
cmProp prop_cstr = nullptr;
|
||||
cmListFileBacktrace bt = status.GetMakefile().GetBacktrace();
|
||||
cmMessenger* messenger = status.GetMakefile().GetMessenger();
|
||||
if (cmTargetPropertyComputer::PassesWhitelist(
|
||||
@@ -320,7 +320,8 @@ bool HandleTargetMode(cmExecutionStatus& status, const std::string& name,
|
||||
prop_cstr = target->GetProperty(propertyName);
|
||||
}
|
||||
}
|
||||
return StoreResult(infoType, status.GetMakefile(), variable, prop_cstr);
|
||||
return StoreResult(infoType, status.GetMakefile(), variable,
|
||||
prop_cstr ? prop_cstr->c_str() : nullptr);
|
||||
}
|
||||
status.SetError(cmStrCat("could not find TARGET ", name,
|
||||
". Perhaps it has not yet been created."));
|
||||
|
||||
@@ -34,7 +34,7 @@ bool cmGetTargetPropertyCommand(std::vector<std::string> const& args,
|
||||
prop_exists = true;
|
||||
}
|
||||
} else if (!args[2].empty()) {
|
||||
const char* prop_cstr = nullptr;
|
||||
cmProp prop_cstr = nullptr;
|
||||
cmListFileBacktrace bt = mf.GetBacktrace();
|
||||
cmMessenger* messenger = mf.GetMessenger();
|
||||
if (cmTargetPropertyComputer::PassesWhitelist(tgt->GetType(), args[2],
|
||||
@@ -45,7 +45,7 @@ bool cmGetTargetPropertyCommand(std::vector<std::string> const& args,
|
||||
}
|
||||
}
|
||||
if (prop_cstr) {
|
||||
prop = prop_cstr;
|
||||
prop = *prop_cstr;
|
||||
prop_exists = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1790,14 +1790,13 @@ void cmGlobalGenerator::CheckTargetProperties()
|
||||
}
|
||||
}
|
||||
std::vector<std::string> incs;
|
||||
const char* incDirProp =
|
||||
target.second.GetProperty("INCLUDE_DIRECTORIES");
|
||||
cmProp incDirProp = target.second.GetProperty("INCLUDE_DIRECTORIES");
|
||||
if (!incDirProp) {
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string incDirs = cmGeneratorExpression::Preprocess(
|
||||
incDirProp, cmGeneratorExpression::StripAllGeneratorExpressions);
|
||||
*incDirProp, cmGeneratorExpression::StripAllGeneratorExpressions);
|
||||
|
||||
cmExpandList(incDirs, incs);
|
||||
|
||||
|
||||
@@ -680,9 +680,9 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||
}
|
||||
|
||||
if (createInstallGeneratorsForTargetFileSets && !namelinkOnly) {
|
||||
const char* files = target.GetProperty("PRIVATE_HEADER");
|
||||
if ((files) && (*files)) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(files);
|
||||
cmProp files = target.GetProperty("PRIVATE_HEADER");
|
||||
if (files && !files->empty()) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(*files);
|
||||
std::vector<std::string> absFiles;
|
||||
if (!helper.MakeFilesFullPath("PRIVATE_HEADER", relFiles, absFiles)) {
|
||||
return false;
|
||||
@@ -703,8 +703,8 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||
}
|
||||
|
||||
files = target.GetProperty("PUBLIC_HEADER");
|
||||
if ((files) && (*files)) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(files);
|
||||
if (files && !files->empty()) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(*files);
|
||||
std::vector<std::string> absFiles;
|
||||
if (!helper.MakeFilesFullPath("PUBLIC_HEADER", relFiles, absFiles)) {
|
||||
return false;
|
||||
@@ -725,8 +725,8 @@ bool HandleTargetsMode(std::vector<std::string> const& args,
|
||||
}
|
||||
|
||||
files = target.GetProperty("RESOURCE");
|
||||
if ((files) && (*files)) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(files);
|
||||
if (files && !files->empty()) {
|
||||
std::vector<std::string> relFiles = cmExpandedList(*files);
|
||||
std::vector<std::string> absFiles;
|
||||
if (!helper.MakeFilesFullPath("RESOURCE", relFiles, absFiles)) {
|
||||
return false;
|
||||
|
||||
+54
-58
@@ -2473,14 +2473,14 @@ void cmMakefile::ExpandVariablesCMP0019()
|
||||
t.GetType() == cmStateEnums::GLOBAL_TARGET) {
|
||||
continue;
|
||||
}
|
||||
includeDirs = t.GetProperty("INCLUDE_DIRECTORIES");
|
||||
if (mightExpandVariablesCMP0019(includeDirs)) {
|
||||
std::string dirs = includeDirs;
|
||||
cmProp includeDirs2 = t.GetProperty("INCLUDE_DIRECTORIES");
|
||||
if (includeDirs2 && mightExpandVariablesCMP0019(includeDirs2->c_str())) {
|
||||
std::string dirs = *includeDirs2;
|
||||
this->ExpandVariablesInString(dirs, true, true);
|
||||
if (pol == cmPolicies::WARN && dirs != includeDirs) {
|
||||
if (pol == cmPolicies::WARN && dirs != *includeDirs2) {
|
||||
/* clang-format off */
|
||||
w << "Evaluated target " << t.GetName() << " INCLUDE_DIRECTORIES\n"
|
||||
<< " " << includeDirs << "\n"
|
||||
<< " " << *includeDirs2 << "\n"
|
||||
<< "as\n"
|
||||
<< " " << dirs << "\n";
|
||||
/* clang-format on */
|
||||
@@ -2492,7 +2492,7 @@ void cmMakefile::ExpandVariablesCMP0019()
|
||||
if (const char* linkDirsProp = this->GetProperty("LINK_DIRECTORIES")) {
|
||||
if (mightExpandVariablesCMP0019(linkDirsProp)) {
|
||||
std::string d = linkDirsProp;
|
||||
std::string orig = linkDirsProp;
|
||||
const std::string orig = d;
|
||||
this->ExpandVariablesInString(d, true, true);
|
||||
if (pol == cmPolicies::WARN && d != orig) {
|
||||
/* clang-format off */
|
||||
@@ -2518,7 +2518,7 @@ void cmMakefile::ExpandVariablesCMP0019()
|
||||
libName = *l;
|
||||
}
|
||||
if (mightExpandVariablesCMP0019(libName.c_str())) {
|
||||
std::string orig = libName;
|
||||
const std::string orig = libName;
|
||||
this->ExpandVariablesInString(libName, true, true);
|
||||
if (pol == cmPolicies::WARN && libName != orig) {
|
||||
/* clang-format off */
|
||||
@@ -3031,7 +3031,7 @@ MessageType cmMakefile::ExpandVariablesInStringNew(
|
||||
openstack.pop_back();
|
||||
result.append(last, in - last);
|
||||
std::string const& lookup = result.substr(var.loc);
|
||||
const char* value = nullptr;
|
||||
cmProp value = nullptr;
|
||||
std::string varresult;
|
||||
std::string svalue;
|
||||
switch (var.domain) {
|
||||
@@ -3039,26 +3039,24 @@ MessageType cmMakefile::ExpandVariablesInStringNew(
|
||||
if (filename && lookup == lineVar) {
|
||||
varresult = std::to_string(line);
|
||||
} else {
|
||||
value = this->GetDefinition(lookup);
|
||||
value = this->GetDef(lookup);
|
||||
}
|
||||
break;
|
||||
case ENVIRONMENT:
|
||||
if (cmSystemTools::GetEnv(lookup, svalue)) {
|
||||
value = svalue.c_str();
|
||||
value = &svalue;
|
||||
}
|
||||
break;
|
||||
case CACHE:
|
||||
if (cmProp value2 = state->GetCacheEntryValue(lookup)) {
|
||||
value = value2->c_str();
|
||||
}
|
||||
value = state->GetCacheEntryValue(lookup);
|
||||
break;
|
||||
}
|
||||
// Get the string we're meant to append to.
|
||||
if (value) {
|
||||
if (escapeQuotes) {
|
||||
varresult = cmEscapeQuotes(value);
|
||||
varresult = cmEscapeQuotes(*value);
|
||||
} else {
|
||||
varresult = value;
|
||||
varresult = *value;
|
||||
}
|
||||
} else if (!this->SuppressSideEffects) {
|
||||
this->MaybeWarnUninitialized(lookup, filename);
|
||||
@@ -4800,8 +4798,8 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
||||
const std::string& feature,
|
||||
std::string const& lang) const
|
||||
{
|
||||
const char* defaultCStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
cmProp defaultCStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (!defaultCStandard) {
|
||||
this->IssueMessage(
|
||||
MessageType::INTERNAL_ERROR,
|
||||
@@ -4812,11 +4810,11 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
||||
return true;
|
||||
}
|
||||
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
||||
cmStrCmp(defaultCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
cmStrCmp(*defaultCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
const std::string e = cmStrCat("The CMAKE_", lang,
|
||||
"_STANDARD_DEFAULT variable contains an "
|
||||
"invalid value: \"",
|
||||
defaultCStandard, "\".");
|
||||
*defaultCStandard, "\".");
|
||||
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
@@ -4827,24 +4825,23 @@ bool cmMakefile::HaveCStandardAvailable(cmTarget const* target,
|
||||
|
||||
this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11);
|
||||
|
||||
const char* existingCStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
cmProp existingCStandard = target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (!existingCStandard) {
|
||||
existingCStandard = defaultCStandard;
|
||||
}
|
||||
|
||||
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
||||
cmStrCmp(existingCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCStandard, "\".");
|
||||
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* const* existingCIt = existingCStandard
|
||||
? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
||||
cmStrCmp(existingCStandard))
|
||||
cmStrCmp(*existingCStandard))
|
||||
: cm::cend(C_STANDARDS);
|
||||
|
||||
if (needC11 && existingCStandard &&
|
||||
@@ -4895,8 +4892,8 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
||||
const std::string& feature,
|
||||
std::string const& lang) const
|
||||
{
|
||||
const char* defaultCxxStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
cmProp defaultCxxStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (!defaultCxxStandard) {
|
||||
this->IssueMessage(
|
||||
MessageType::INTERNAL_ERROR,
|
||||
@@ -4907,10 +4904,10 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
||||
return true;
|
||||
}
|
||||
if (std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
||||
cmStrCmp(defaultCxxStandard)) == cm::cend(CXX_STANDARDS)) {
|
||||
cmStrCmp(*defaultCxxStandard)) == cm::cend(CXX_STANDARDS)) {
|
||||
const std::string e =
|
||||
cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ",
|
||||
"invalid value: \"", defaultCxxStandard, "\".");
|
||||
"invalid value: \"", *defaultCxxStandard, "\".");
|
||||
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
@@ -4923,7 +4920,7 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
||||
this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14,
|
||||
needCxx17, needCxx20);
|
||||
|
||||
const char* existingCxxStandard =
|
||||
cmProp existingCxxStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (!existingCxxStandard) {
|
||||
existingCxxStandard = defaultCxxStandard;
|
||||
@@ -4931,11 +4928,11 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target,
|
||||
|
||||
const char* const* existingCxxLevel =
|
||||
std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
||||
cmStrCmp(existingCxxStandard));
|
||||
cmStrCmp(*existingCxxStandard));
|
||||
if (existingCxxLevel == cm::cend(CXX_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCxxStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCxxStandard, "\".");
|
||||
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
@@ -5000,12 +4997,12 @@ bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target,
|
||||
this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14,
|
||||
needCxx17, needCxx20);
|
||||
|
||||
const char* existingCxxStandard =
|
||||
cmProp existingCxxStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (existingCxxStandard == nullptr) {
|
||||
const char* defaultCxxStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCxxStandard && *defaultCxxStandard) {
|
||||
cmProp defaultCxxStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCxxStandard && !defaultCxxStandard->empty()) {
|
||||
existingCxxStandard = defaultCxxStandard;
|
||||
}
|
||||
}
|
||||
@@ -5013,11 +5010,11 @@ bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target,
|
||||
if (existingCxxStandard) {
|
||||
existingCxxLevel =
|
||||
std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS),
|
||||
cmStrCmp(existingCxxStandard));
|
||||
cmStrCmp(*existingCxxStandard));
|
||||
if (existingCxxLevel == cm::cend(CXX_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCxxStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCxxStandard, "\".");
|
||||
if (error) {
|
||||
*error = e;
|
||||
} else {
|
||||
@@ -5053,8 +5050,8 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
||||
const std::string& feature,
|
||||
std::string const& lang) const
|
||||
{
|
||||
const char* defaultCudaStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
cmProp defaultCudaStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (!defaultCudaStandard) {
|
||||
this->IssueMessage(
|
||||
MessageType::INTERNAL_ERROR,
|
||||
@@ -5065,11 +5062,11 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
||||
return true;
|
||||
}
|
||||
if (std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
||||
cmStrCmp(defaultCudaStandard)) ==
|
||||
cmStrCmp(*defaultCudaStandard)) ==
|
||||
cm::cend(CUDA_STANDARDS)) {
|
||||
const std::string e =
|
||||
cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ",
|
||||
"invalid value: \"", defaultCudaStandard, "\".");
|
||||
"invalid value: \"", *defaultCudaStandard, "\".");
|
||||
this->IssueMessage(MessageType::INTERNAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
@@ -5082,7 +5079,7 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
||||
this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11,
|
||||
needCuda14, needCuda17, needCuda20);
|
||||
|
||||
const char* existingCudaStandard =
|
||||
cmProp existingCudaStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (!existingCudaStandard) {
|
||||
existingCudaStandard = defaultCudaStandard;
|
||||
@@ -5090,11 +5087,11 @@ bool cmMakefile::HaveCudaStandardAvailable(cmTarget const* target,
|
||||
|
||||
const char* const* existingCudaLevel =
|
||||
std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
||||
cmStrCmp(existingCudaStandard));
|
||||
cmStrCmp(*existingCudaStandard));
|
||||
if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCudaStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCudaStandard, "\".");
|
||||
this->IssueMessage(MessageType::FATAL_ERROR, e);
|
||||
return false;
|
||||
}
|
||||
@@ -5159,12 +5156,12 @@ bool cmMakefile::AddRequiredTargetCudaFeature(cmTarget* target,
|
||||
this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11,
|
||||
needCuda14, needCuda17, needCuda20);
|
||||
|
||||
const char* existingCudaStandard =
|
||||
cmProp existingCudaStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (existingCudaStandard == nullptr) {
|
||||
const char* defaultCudaStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCudaStandard && *defaultCudaStandard) {
|
||||
cmProp defaultCudaStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCudaStandard && !defaultCudaStandard->empty()) {
|
||||
existingCudaStandard = defaultCudaStandard;
|
||||
}
|
||||
}
|
||||
@@ -5172,11 +5169,11 @@ bool cmMakefile::AddRequiredTargetCudaFeature(cmTarget* target,
|
||||
if (existingCudaStandard) {
|
||||
existingCudaLevel =
|
||||
std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS),
|
||||
cmStrCmp(existingCudaStandard));
|
||||
cmStrCmp(*existingCudaStandard));
|
||||
if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCudaStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCudaStandard, "\".");
|
||||
if (error) {
|
||||
*error = e;
|
||||
} else {
|
||||
@@ -5240,21 +5237,20 @@ bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target,
|
||||
|
||||
this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11);
|
||||
|
||||
const char* existingCStandard =
|
||||
target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
cmProp existingCStandard = target->GetProperty(cmStrCat(lang, "_STANDARD"));
|
||||
if (existingCStandard == nullptr) {
|
||||
const char* defaultCStandard =
|
||||
this->GetDefinition(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCStandard && *defaultCStandard) {
|
||||
cmProp defaultCStandard =
|
||||
this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT"));
|
||||
if (defaultCStandard && !defaultCStandard->empty()) {
|
||||
existingCStandard = defaultCStandard;
|
||||
}
|
||||
}
|
||||
if (existingCStandard) {
|
||||
if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
||||
cmStrCmp(existingCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) {
|
||||
const std::string e = cmStrCat(
|
||||
"The ", lang, "_STANDARD property on target \"", target->GetName(),
|
||||
"\" contained an invalid value: \"", existingCStandard, "\".");
|
||||
"\" contained an invalid value: \"", *existingCStandard, "\".");
|
||||
if (error) {
|
||||
*error = e;
|
||||
} else {
|
||||
@@ -5266,7 +5262,7 @@ bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target,
|
||||
}
|
||||
const char* const* existingCIt = existingCStandard
|
||||
? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS),
|
||||
cmStrCmp(existingCStandard))
|
||||
cmStrCmp(*existingCStandard))
|
||||
: cm::cend(C_STANDARDS);
|
||||
|
||||
bool setC90 = needC90 && !existingCStandard;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmTarget.h"
|
||||
|
||||
using cmProp = const std::string*;
|
||||
|
||||
namespace {
|
||||
/** \class cmDependInformation
|
||||
* \brief Store dependency information for a single source file.
|
||||
@@ -117,14 +119,13 @@ public:
|
||||
std::set<std::string> uniqueIncludes;
|
||||
std::vector<std::string> orderedAndUniqueIncludes;
|
||||
for (auto const& target : this->Makefile->GetTargets()) {
|
||||
const char* incDirProp =
|
||||
target.second.GetProperty("INCLUDE_DIRECTORIES");
|
||||
cmProp incDirProp = target.second.GetProperty("INCLUDE_DIRECTORIES");
|
||||
if (!incDirProp) {
|
||||
continue;
|
||||
}
|
||||
|
||||
std::string incDirs = cmGeneratorExpression::Preprocess(
|
||||
incDirProp, cmGeneratorExpression::StripAllGeneratorExpressions);
|
||||
*incDirProp, cmGeneratorExpression::StripAllGeneratorExpressions);
|
||||
|
||||
std::vector<std::string> includes = cmExpandedList(incDirs);
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmake.h"
|
||||
|
||||
using cmProp = const std::string*;
|
||||
|
||||
cmState::cmState()
|
||||
{
|
||||
this->CacheManager = cm::make_unique<cmCacheManager>();
|
||||
|
||||
+60
-66
@@ -1301,8 +1301,8 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
||||
reusedTarget->SetProperty("COMPILE_PDB_OUTPUT_DIRECTORY",
|
||||
cmStrCat(reusedFrom, ".dir/"));
|
||||
|
||||
this->SetProperty("COMPILE_PDB_NAME",
|
||||
reusedTarget->GetProperty("COMPILE_PDB_NAME"));
|
||||
cmProp tmp = reusedTarget->GetProperty("COMPILE_PDB_NAME");
|
||||
this->SetProperty("COMPILE_PDB_NAME", tmp ? tmp->c_str() : nullptr);
|
||||
this->AddUtility(reusedFrom, false, impl->Makefile);
|
||||
} else {
|
||||
impl->Properties.SetProperty(prop, value);
|
||||
@@ -1506,7 +1506,7 @@ void cmTarget::InsertPrecompileHeader(std::string const& entry,
|
||||
}
|
||||
|
||||
static void cmTargetCheckLINK_INTERFACE_LIBRARIES(const std::string& prop,
|
||||
const char* value,
|
||||
const std::string& value,
|
||||
cmMakefile* context,
|
||||
bool imported)
|
||||
{
|
||||
@@ -1544,7 +1544,7 @@ static void cmTargetCheckLINK_INTERFACE_LIBRARIES(const std::string& prop,
|
||||
context->IssueMessage(MessageType::FATAL_ERROR, e.str());
|
||||
}
|
||||
|
||||
static void cmTargetCheckINTERFACE_LINK_LIBRARIES(const char* value,
|
||||
static void cmTargetCheckINTERFACE_LINK_LIBRARIES(const std::string& value,
|
||||
cmMakefile* context)
|
||||
{
|
||||
// Look for link-type keywords in the value.
|
||||
@@ -1589,18 +1589,18 @@ void cmTarget::CheckProperty(const std::string& prop,
|
||||
{
|
||||
// Certain properties need checking.
|
||||
if (cmHasLiteralPrefix(prop, "LINK_INTERFACE_LIBRARIES")) {
|
||||
if (const char* value = this->GetProperty(prop)) {
|
||||
cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, value, context, false);
|
||||
if (cmProp value = this->GetProperty(prop)) {
|
||||
cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, *value, context, false);
|
||||
}
|
||||
}
|
||||
if (cmHasLiteralPrefix(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES")) {
|
||||
if (const char* value = this->GetProperty(prop)) {
|
||||
cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, value, context, true);
|
||||
if (cmProp value = this->GetProperty(prop)) {
|
||||
cmTargetCheckLINK_INTERFACE_LIBRARIES(prop, *value, context, true);
|
||||
}
|
||||
}
|
||||
if (prop == "INTERFACE_LINK_LIBRARIES") {
|
||||
if (const char* value = this->GetProperty(prop)) {
|
||||
cmTargetCheckINTERFACE_LINK_LIBRARIES(value, context);
|
||||
if (cmProp value = this->GetProperty(prop)) {
|
||||
cmTargetCheckINTERFACE_LINK_LIBRARIES(*value, context);
|
||||
}
|
||||
}
|
||||
if (prop == "IMPORTED_GLOBAL") {
|
||||
@@ -1610,16 +1610,14 @@ void cmTarget::CheckProperty(const std::string& prop,
|
||||
}
|
||||
}
|
||||
|
||||
const char* cmTarget::GetComputedProperty(
|
||||
const std::string& prop, cmMessenger* messenger,
|
||||
cmListFileBacktrace const& context) const
|
||||
cmProp cmTarget::GetComputedProperty(const std::string& prop,
|
||||
cmMessenger* messenger,
|
||||
cmListFileBacktrace const& context) const
|
||||
{
|
||||
cmProp retVal =
|
||||
cmTargetPropertyComputer::GetProperty(this, prop, messenger, context);
|
||||
return retVal ? retVal->c_str() : nullptr;
|
||||
return cmTargetPropertyComputer::GetProperty(this, prop, messenger, context);
|
||||
}
|
||||
|
||||
const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
cmProp cmTarget::GetProperty(const std::string& prop) const
|
||||
{
|
||||
#define MAKE_STATIC_PROP(PROP) static const std::string prop##PROP = #PROP
|
||||
MAKE_STATIC_PROP(LINK_LIBRARIES);
|
||||
@@ -1638,6 +1636,8 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
MAKE_STATIC_PROP(BINARY_DIR);
|
||||
MAKE_STATIC_PROP(SOURCE_DIR);
|
||||
MAKE_STATIC_PROP(SOURCES);
|
||||
MAKE_STATIC_PROP(FALSE);
|
||||
MAKE_STATIC_PROP(TRUE);
|
||||
#undef MAKE_STATIC_PROP
|
||||
static std::unordered_set<std::string> const specialProps{
|
||||
propLINK_LIBRARIES,
|
||||
@@ -1665,11 +1665,11 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->LinkImplementationPropertyEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
// the type property returns what type the target is
|
||||
if (prop == propTYPE) {
|
||||
return cmState::GetTargetTypeName(this->GetType()).c_str();
|
||||
return &cmState::GetTargetTypeName(this->GetType());
|
||||
}
|
||||
if (prop == propINCLUDE_DIRECTORIES) {
|
||||
if (impl->IncludeDirectoriesEntries.empty()) {
|
||||
@@ -1678,7 +1678,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->IncludeDirectoriesEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propCOMPILE_FEATURES) {
|
||||
if (impl->CompileFeaturesEntries.empty()) {
|
||||
@@ -1687,7 +1687,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->CompileFeaturesEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propCOMPILE_OPTIONS) {
|
||||
if (impl->CompileOptionsEntries.empty()) {
|
||||
@@ -1696,7 +1696,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->CompileOptionsEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propCOMPILE_DEFINITIONS) {
|
||||
if (impl->CompileDefinitionsEntries.empty()) {
|
||||
@@ -1705,7 +1705,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->CompileDefinitionsEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propLINK_OPTIONS) {
|
||||
if (impl->LinkOptionsEntries.empty()) {
|
||||
@@ -1714,7 +1714,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->LinkOptionsEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propLINK_DIRECTORIES) {
|
||||
if (impl->LinkDirectoriesEntries.empty()) {
|
||||
@@ -1724,7 +1724,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
static std::string output;
|
||||
output = cmJoin(impl->LinkDirectoriesEntries, ";");
|
||||
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propMANUALLY_ADDED_DEPENDENCIES) {
|
||||
if (impl->Utilities.empty()) {
|
||||
@@ -1740,7 +1740,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
return item.Value.first;
|
||||
});
|
||||
output = cmJoin(utilities, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propPRECOMPILE_HEADERS) {
|
||||
if (impl->PrecompileHeadersEntries.empty()) {
|
||||
@@ -1749,28 +1749,26 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(impl->PrecompileHeadersEntries, ";");
|
||||
return output.c_str();
|
||||
return &output;
|
||||
}
|
||||
if (prop == propIMPORTED) {
|
||||
return this->IsImported() ? "TRUE" : "FALSE";
|
||||
return this->IsImported() ? &propTRUE : &propFALSE;
|
||||
}
|
||||
if (prop == propIMPORTED_GLOBAL) {
|
||||
return this->IsImportedGloballyVisible() ? "TRUE" : "FALSE";
|
||||
return this->IsImportedGloballyVisible() ? &propTRUE : &propFALSE;
|
||||
}
|
||||
if (prop == propNAME) {
|
||||
return this->GetName().c_str();
|
||||
return &this->GetName();
|
||||
}
|
||||
if (prop == propBINARY_DIR) {
|
||||
return impl->Makefile->GetStateSnapshot()
|
||||
.GetDirectory()
|
||||
.GetCurrentBinary()
|
||||
.c_str();
|
||||
return &impl->Makefile->GetStateSnapshot()
|
||||
.GetDirectory()
|
||||
.GetCurrentBinary();
|
||||
}
|
||||
if (prop == propSOURCE_DIR) {
|
||||
return impl->Makefile->GetStateSnapshot()
|
||||
.GetDirectory()
|
||||
.GetCurrentSource()
|
||||
.c_str();
|
||||
return &impl->Makefile->GetStateSnapshot()
|
||||
.GetDirectory()
|
||||
.GetCurrentSource();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1779,29 +1777,27 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
const bool chain =
|
||||
impl->Makefile->GetState()->IsPropertyChained(prop, cmProperty::TARGET);
|
||||
if (chain) {
|
||||
retVal = impl->Makefile->GetStateSnapshot().GetDirectory().GetProperty(
|
||||
return impl->Makefile->GetStateSnapshot().GetDirectory().GetProperty(
|
||||
prop, chain);
|
||||
if (retVal) {
|
||||
return retVal->c_str();
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
return retVal->c_str();
|
||||
return retVal;
|
||||
}
|
||||
|
||||
const char* cmTarget::GetSafeProperty(const std::string& prop) const
|
||||
{
|
||||
const char* ret = this->GetProperty(prop);
|
||||
cmProp ret = this->GetProperty(prop);
|
||||
if (!ret) {
|
||||
return "";
|
||||
}
|
||||
return ret;
|
||||
return ret->c_str();
|
||||
}
|
||||
|
||||
bool cmTarget::GetPropertyAsBool(const std::string& prop) const
|
||||
{
|
||||
return cmIsOn(this->GetProperty(prop));
|
||||
cmProp p = this->GetProperty(prop);
|
||||
return p && cmIsOn(*p);
|
||||
}
|
||||
|
||||
cmPropertyMap const& cmTarget::GetProperties() const
|
||||
@@ -1930,8 +1926,8 @@ std::string cmTarget::ImportedGetFullPath(
|
||||
|
||||
std::string result;
|
||||
|
||||
const char* loc = nullptr;
|
||||
const char* imp = nullptr;
|
||||
cmProp loc = nullptr;
|
||||
cmProp imp = nullptr;
|
||||
std::string suffix;
|
||||
|
||||
if (this->GetType() != cmStateEnums::INTERFACE_LIBRARY &&
|
||||
@@ -1939,29 +1935,28 @@ std::string cmTarget::ImportedGetFullPath(
|
||||
switch (artifact) {
|
||||
case cmStateEnums::RuntimeBinaryArtifact:
|
||||
if (loc) {
|
||||
result = loc;
|
||||
result = *loc;
|
||||
} else {
|
||||
std::string impProp = cmStrCat("IMPORTED_LOCATION", suffix);
|
||||
if (const char* config_location = this->GetProperty(impProp)) {
|
||||
result = config_location;
|
||||
} else if (const char* location =
|
||||
if (cmProp config_location = this->GetProperty(impProp)) {
|
||||
result = *config_location;
|
||||
} else if (cmProp location =
|
||||
this->GetProperty("IMPORTED_LOCATION")) {
|
||||
result = location;
|
||||
result = *location;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case cmStateEnums::ImportLibraryArtifact:
|
||||
if (imp) {
|
||||
result = imp;
|
||||
result = *imp;
|
||||
} else if (this->GetType() == cmStateEnums::SHARED_LIBRARY ||
|
||||
this->IsExecutableWithExports()) {
|
||||
std::string impProp = cmStrCat("IMPORTED_IMPLIB", suffix);
|
||||
if (const char* config_implib = this->GetProperty(impProp)) {
|
||||
result = config_implib;
|
||||
} else if (const char* implib =
|
||||
this->GetProperty("IMPORTED_IMPLIB")) {
|
||||
result = implib;
|
||||
if (cmProp config_implib = this->GetProperty(impProp)) {
|
||||
result = *config_implib;
|
||||
} else if (cmProp implib = this->GetProperty("IMPORTED_IMPLIB")) {
|
||||
result = *implib;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2004,9 +1999,8 @@ bool cmTargetInternals::CheckImportedLibName(std::string const& prop,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
||||
const char*& loc, const char*& imp,
|
||||
std::string& suffix) const
|
||||
bool cmTarget::GetMappedConfig(std::string const& desired_config, cmProp& loc,
|
||||
cmProp& imp, std::string& suffix) const
|
||||
{
|
||||
std::string config_upper;
|
||||
if (!desired_config.empty()) {
|
||||
@@ -2028,8 +2022,8 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
||||
std::vector<std::string> mappedConfigs;
|
||||
{
|
||||
std::string mapProp = cmStrCat("MAP_IMPORTED_CONFIG_", config_upper);
|
||||
if (const char* mapValue = this->GetProperty(mapProp)) {
|
||||
cmExpandList(mapValue, mappedConfigs, true);
|
||||
if (cmProp mapValue = this->GetProperty(mapProp)) {
|
||||
cmExpandList(*mapValue, mappedConfigs, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2110,8 +2104,8 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config,
|
||||
// any available configuration.
|
||||
if (!loc && !imp) {
|
||||
std::vector<std::string> availableConfigs;
|
||||
if (const char* iconfigs = this->GetProperty("IMPORTED_CONFIGURATIONS")) {
|
||||
cmExpandList(iconfigs, availableConfigs);
|
||||
if (cmProp iconfigs = this->GetProperty("IMPORTED_CONFIGURATIONS")) {
|
||||
cmExpandList(*iconfigs, availableConfigs);
|
||||
}
|
||||
for (auto aci = availableConfigs.begin();
|
||||
!loc && !imp && aci != availableConfigs.end(); ++aci) {
|
||||
|
||||
+7
-6
@@ -28,6 +28,8 @@ class cmPropertyMap;
|
||||
class cmSourceFile;
|
||||
class cmTargetInternals;
|
||||
|
||||
using cmProp = const std::string*;
|
||||
|
||||
/** \class cmTarget
|
||||
* \brief Represent a library or executable target loaded from a makefile.
|
||||
*
|
||||
@@ -170,14 +172,13 @@ public:
|
||||
void AppendProperty(const std::string& prop, const std::string& value,
|
||||
bool asString = false);
|
||||
//! Might return a nullptr if the property is not set or invalid
|
||||
const char* GetProperty(const std::string& prop) const;
|
||||
cmProp GetProperty(const std::string& prop) const;
|
||||
//! Always returns a valid pointer
|
||||
const char* GetSafeProperty(const std::string& prop) const;
|
||||
bool GetPropertyAsBool(const std::string& prop) const;
|
||||
void CheckProperty(const std::string& prop, cmMakefile* context) const;
|
||||
const char* GetComputedProperty(const std::string& prop,
|
||||
cmMessenger* messenger,
|
||||
cmListFileBacktrace const& context) const;
|
||||
cmProp GetComputedProperty(const std::string& prop, cmMessenger* messenger,
|
||||
cmListFileBacktrace const& context) const;
|
||||
//! Get all properties
|
||||
cmPropertyMap const& GetProperties() const;
|
||||
|
||||
@@ -191,8 +192,8 @@ public:
|
||||
bool IsImportedGloballyVisible() const;
|
||||
bool IsPerConfig() const;
|
||||
|
||||
bool GetMappedConfig(std::string const& desired_config, const char*& loc,
|
||||
const char*& imp, std::string& suffix) const;
|
||||
bool GetMappedConfig(std::string const& desired_config, cmProp& loc,
|
||||
cmProp& imp, std::string& suffix) const;
|
||||
|
||||
//! Return whether this target is an executable with symbol exports enabled.
|
||||
bool IsExecutableWithExports() const;
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "cmTarget.h"
|
||||
#include "cmake.h"
|
||||
|
||||
using cmProp = const std::string*;
|
||||
|
||||
cmTargetPropCommandBase::cmTargetPropCommandBase(cmExecutionStatus& status)
|
||||
: Makefile(&status.GetMakefile())
|
||||
, Status(status)
|
||||
@@ -157,9 +159,9 @@ void cmTargetPropCommandBase::HandleInterfaceContent(
|
||||
{
|
||||
if (prepend) {
|
||||
const std::string propName = std::string("INTERFACE_") + this->Property;
|
||||
const char* propValue = tgt->GetProperty(propName);
|
||||
const std::string totalContent = this->Join(content) +
|
||||
(propValue ? std::string(";") + propValue : std::string());
|
||||
cmProp propValue = tgt->GetProperty(propName);
|
||||
const std::string totalContent =
|
||||
this->Join(content) + (propValue ? (";" + *propValue) : std::string());
|
||||
tgt->SetProperty(propName, totalContent);
|
||||
} else {
|
||||
tgt->AppendProperty("INTERFACE_" + this->Property, this->Join(content));
|
||||
|
||||
@@ -877,11 +877,10 @@ void cmVisualStudio10TargetGenerator::WriteDotNetReference(
|
||||
|
||||
void cmVisualStudio10TargetGenerator::WriteImports(Elem& e0)
|
||||
{
|
||||
const char* imports =
|
||||
cmProp imports =
|
||||
this->GeneratorTarget->Target->GetProperty("VS_PROJECT_IMPORT");
|
||||
if (imports) {
|
||||
std::vector<std::string> argsSplit =
|
||||
cmExpandedList(std::string(imports), false);
|
||||
std::vector<std::string> argsSplit = cmExpandedList(*imports, false);
|
||||
for (auto& path : argsSplit) {
|
||||
if (!cmsys::SystemTools::FileIsFullPath(path)) {
|
||||
path = this->Makefile->GetCurrentSourceDirectory() + "/" + path;
|
||||
@@ -1959,11 +1958,12 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(Elem& e1,
|
||||
}
|
||||
|
||||
if (ParsedToolTargetSettings.find(tool) == ParsedToolTargetSettings.end()) {
|
||||
const char* toolTargetProperty =
|
||||
this->GeneratorTarget->Target->GetProperty("VS_SOURCE_SETTINGS_" +
|
||||
std::string(tool));
|
||||
cmProp toolTargetProperty = this->GeneratorTarget->Target->GetProperty(
|
||||
"VS_SOURCE_SETTINGS_" + std::string(tool));
|
||||
ConfigToSettings toolTargetSettings;
|
||||
ParseSettingsProperty(toolTargetProperty, toolTargetSettings);
|
||||
if (toolTargetProperty) {
|
||||
ParseSettingsProperty(toolTargetProperty->c_str(), toolTargetSettings);
|
||||
}
|
||||
|
||||
ParsedToolTargetSettings[tool] = toolTargetSettings;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user