mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-15 03:48:02 +08:00
cmState::GetTargetTypeName: return type is *cmProp
This commit is contained in:
@@ -101,29 +101,23 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
|
||||
this->SrcFileSignature = true;
|
||||
|
||||
cmStateEnums::TargetType targetType = cmStateEnums::EXECUTABLE;
|
||||
const char* tt =
|
||||
this->Makefile->GetDefinition("CMAKE_TRY_COMPILE_TARGET_TYPE");
|
||||
if (!isTryRun && tt && *tt) {
|
||||
if (strcmp(tt, cmState::GetTargetTypeName(cmStateEnums::EXECUTABLE)) ==
|
||||
0) {
|
||||
const std::string* tt =
|
||||
this->Makefile->GetDef("CMAKE_TRY_COMPILE_TARGET_TYPE");
|
||||
if (!isTryRun && tt && !tt->empty()) {
|
||||
if (*tt == cmState::GetTargetTypeName(cmStateEnums::EXECUTABLE)) {
|
||||
targetType = cmStateEnums::EXECUTABLE;
|
||||
} else if (strcmp(tt,
|
||||
cmState::GetTargetTypeName(
|
||||
cmStateEnums::STATIC_LIBRARY)) == 0) {
|
||||
} else if (*tt ==
|
||||
cmState::GetTargetTypeName(cmStateEnums::STATIC_LIBRARY)) {
|
||||
targetType = cmStateEnums::STATIC_LIBRARY;
|
||||
} else {
|
||||
this->Makefile->IssueMessage(
|
||||
MessageType::FATAL_ERROR,
|
||||
std::string("Invalid value '") + tt +
|
||||
"' for "
|
||||
"CMAKE_TRY_COMPILE_TARGET_TYPE. Only "
|
||||
"'" +
|
||||
cmState::GetTargetTypeName(cmStateEnums::EXECUTABLE) +
|
||||
"' and "
|
||||
"'" +
|
||||
cmState::GetTargetTypeName(cmStateEnums::STATIC_LIBRARY) +
|
||||
"' "
|
||||
"are allowed.");
|
||||
cmStrCat("Invalid value '", *tt,
|
||||
"' for CMAKE_TRY_COMPILE_TARGET_TYPE. Only '",
|
||||
cmState::GetTargetTypeName(cmStateEnums::EXECUTABLE),
|
||||
"' and '",
|
||||
cmState::GetTargetTypeName(cmStateEnums::STATIC_LIBRARY),
|
||||
"' are allowed."));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -296,12 +290,10 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv,
|
||||
default:
|
||||
this->Makefile->IssueMessage(
|
||||
MessageType::FATAL_ERROR,
|
||||
"Only libraries may be used as try_compile or try_run IMPORTED "
|
||||
"LINK_LIBRARIES. Got " +
|
||||
std::string(tgt->GetName()) +
|
||||
" of "
|
||||
"type " +
|
||||
cmState::GetTargetTypeName(tgt->GetType()) + ".");
|
||||
cmStrCat("Only libraries may be used as try_compile or try_run "
|
||||
"IMPORTED LINK_LIBRARIES. Got ",
|
||||
tgt->GetName(), " of type ",
|
||||
cmState::GetTargetTypeName(tgt->GetType()), "."));
|
||||
return -1;
|
||||
}
|
||||
if (tgt->IsImported()) {
|
||||
|
@@ -974,7 +974,8 @@ void cmLocalUnixMakefileGenerator3::AppendCustomCommand(
|
||||
// Expand rule variables referenced in the given launcher command.
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = target->GetName().c_str();
|
||||
vars.CMTargetType = cmState::GetTargetTypeName(target->GetType());
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(target->GetType()).c_str();
|
||||
std::string output;
|
||||
const std::vector<std::string>& outputs = ccg.GetOutputs();
|
||||
if (!outputs.empty()) {
|
||||
|
@@ -547,7 +547,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GeneratorTarget->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType());
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType()).c_str();
|
||||
vars.Language = linkLanguage.c_str();
|
||||
vars.Objects = buildObjs.c_str();
|
||||
std::string objectDir = this->GeneratorTarget->GetSupportDirectory();
|
||||
|
@@ -756,7 +756,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules(
|
||||
|
||||
vars.CMTargetName = this->GeneratorTarget->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType());
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType()).c_str();
|
||||
vars.Language = linkLanguage.c_str();
|
||||
vars.AIXExports = aixExports.c_str();
|
||||
vars.Objects = buildObjs.c_str();
|
||||
|
@@ -639,7 +639,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GeneratorTarget->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType());
|
||||
cmState::GetTargetTypeName(this->GeneratorTarget->GetType()).c_str();
|
||||
vars.Language = lang.c_str();
|
||||
vars.Target = targetOutPathReal.c_str();
|
||||
vars.TargetPDB = targetOutPathPDB.c_str();
|
||||
|
@@ -156,23 +156,25 @@ const char* cmNinjaNormalTargetGenerator::GetVisibleTypeName() const
|
||||
std::string cmNinjaNormalTargetGenerator::LanguageLinkerRule(
|
||||
const std::string& config) const
|
||||
{
|
||||
return this->TargetLinkLanguage(config) + "_" +
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()) +
|
||||
"_LINKER__" +
|
||||
return cmStrCat(
|
||||
this->TargetLinkLanguage(config), "_",
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()),
|
||||
"_LINKER__",
|
||||
cmGlobalNinjaGenerator::EncodeRuleName(
|
||||
this->GetGeneratorTarget()->GetName()) +
|
||||
"_" + config;
|
||||
this->GetGeneratorTarget()->GetName()),
|
||||
"_", config);
|
||||
}
|
||||
|
||||
std::string cmNinjaNormalTargetGenerator::LanguageLinkerDeviceRule(
|
||||
const std::string& config) const
|
||||
{
|
||||
return this->TargetLinkLanguage(config) + "_" +
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()) +
|
||||
"_DEVICE_LINKER__" +
|
||||
return cmStrCat(
|
||||
this->TargetLinkLanguage(config), "_",
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()),
|
||||
"_DEVICE_LINKER__",
|
||||
cmGlobalNinjaGenerator::EncodeRuleName(
|
||||
this->GetGeneratorTarget()->GetName()) +
|
||||
"_" + config;
|
||||
this->GetGeneratorTarget()->GetName()),
|
||||
"_", config);
|
||||
}
|
||||
|
||||
struct cmNinjaRemoveNoOpCommands
|
||||
@@ -191,7 +193,8 @@ void cmNinjaNormalTargetGenerator::WriteDeviceLinkRule(
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GetGeneratorTarget()->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType());
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType())
|
||||
.c_str();
|
||||
|
||||
vars.Language = "CUDA";
|
||||
|
||||
@@ -282,7 +285,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkRule(bool useResponseFile,
|
||||
cmNinjaRule rule(std::move(linkRuleName));
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GetGeneratorTarget()->GetName().c_str();
|
||||
vars.CMTargetType = cmState::GetTargetTypeName(targetType);
|
||||
vars.CMTargetType = cmState::GetTargetTypeName(targetType).c_str();
|
||||
|
||||
std::string lang = this->TargetLinkLanguage(config);
|
||||
vars.Language = config.c_str();
|
||||
|
@@ -495,7 +495,7 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
|
||||
cmRulePlaceholderExpander::RuleVariables vars;
|
||||
vars.CMTargetName = this->GetGeneratorTarget()->GetName().c_str();
|
||||
vars.CMTargetType =
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType());
|
||||
cmState::GetTargetTypeName(this->GetGeneratorTarget()->GetType()).c_str();
|
||||
vars.Language = lang.c_str();
|
||||
vars.Source = "$in";
|
||||
vars.Object = "$out";
|
||||
|
@@ -34,30 +34,44 @@ cmState::cmState()
|
||||
|
||||
cmState::~cmState() = default;
|
||||
|
||||
const char* cmState::GetTargetTypeName(cmStateEnums::TargetType targetType)
|
||||
const std::string& cmState::GetTargetTypeName(
|
||||
cmStateEnums::TargetType targetType)
|
||||
{
|
||||
#define MAKE_STATIC_PROP(PROP) static const std::string prop##PROP = #PROP
|
||||
MAKE_STATIC_PROP(STATIC_LIBRARY);
|
||||
MAKE_STATIC_PROP(MODULE_LIBRARY);
|
||||
MAKE_STATIC_PROP(SHARED_LIBRARY);
|
||||
MAKE_STATIC_PROP(OBJECT_LIBRARY);
|
||||
MAKE_STATIC_PROP(EXECUTABLE);
|
||||
MAKE_STATIC_PROP(UTILITY);
|
||||
MAKE_STATIC_PROP(GLOBAL_TARGET);
|
||||
MAKE_STATIC_PROP(INTERFACE_LIBRARY);
|
||||
MAKE_STATIC_PROP(UNKNOWN_LIBRARY);
|
||||
static const std::string propEmpty;
|
||||
#undef MAKE_STATIC_PROP
|
||||
|
||||
switch (targetType) {
|
||||
case cmStateEnums::STATIC_LIBRARY:
|
||||
return "STATIC_LIBRARY";
|
||||
return propSTATIC_LIBRARY;
|
||||
case cmStateEnums::MODULE_LIBRARY:
|
||||
return "MODULE_LIBRARY";
|
||||
return propMODULE_LIBRARY;
|
||||
case cmStateEnums::SHARED_LIBRARY:
|
||||
return "SHARED_LIBRARY";
|
||||
return propSHARED_LIBRARY;
|
||||
case cmStateEnums::OBJECT_LIBRARY:
|
||||
return "OBJECT_LIBRARY";
|
||||
return propOBJECT_LIBRARY;
|
||||
case cmStateEnums::EXECUTABLE:
|
||||
return "EXECUTABLE";
|
||||
return propEXECUTABLE;
|
||||
case cmStateEnums::UTILITY:
|
||||
return "UTILITY";
|
||||
return propUTILITY;
|
||||
case cmStateEnums::GLOBAL_TARGET:
|
||||
return "GLOBAL_TARGET";
|
||||
return propGLOBAL_TARGET;
|
||||
case cmStateEnums::INTERFACE_LIBRARY:
|
||||
return "INTERFACE_LIBRARY";
|
||||
return propINTERFACE_LIBRARY;
|
||||
case cmStateEnums::UNKNOWN_LIBRARY:
|
||||
return "UNKNOWN_LIBRARY";
|
||||
return propUNKNOWN_LIBRARY;
|
||||
}
|
||||
assert(false && "Unexpected target type");
|
||||
return nullptr;
|
||||
return propEmpty;
|
||||
}
|
||||
|
||||
static const std::array<std::string, 7> cmCacheEntryTypes = {
|
||||
|
@@ -53,7 +53,8 @@ public:
|
||||
CPack,
|
||||
};
|
||||
|
||||
static const char* GetTargetTypeName(cmStateEnums::TargetType targetType);
|
||||
static const std::string& GetTargetTypeName(
|
||||
cmStateEnums::TargetType targetType);
|
||||
|
||||
cmStateSnapshot CreateBaseSnapshot();
|
||||
cmStateSnapshot CreateBuildsystemDirectorySnapshot(
|
||||
|
@@ -1668,7 +1668,7 @@ const char* cmTarget::GetProperty(const std::string& prop) const
|
||||
}
|
||||
// the type property returns what type the target is
|
||||
if (prop == propTYPE) {
|
||||
return cmState::GetTargetTypeName(this->GetType());
|
||||
return cmState::GetTargetTypeName(this->GetType()).c_str();
|
||||
}
|
||||
if (prop == propINCLUDE_DIRECTORIES) {
|
||||
if (impl->IncludeDirectoriesEntries.empty()) {
|
||||
|
Reference in New Issue
Block a user