Merge topic 'fix-getsafedef-stdstring'

2428422c02 Fix regression in target output file naming logic
d686f81e58 Restore possibly regressed CMP0018 logic

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2402
This commit is contained in:
Brad King
2018-09-19 14:32:55 +00:00
committed by Kitware Robot
6 changed files with 21 additions and 14 deletions

View File

@@ -3494,13 +3494,12 @@ void cmGeneratorTarget::GetFullNameInternal(
}
// if there is no prefix on the target use the cmake definition
std::string targetPrefix2, targetSuffix2;
if (!targetPrefix && prefixVar) {
targetPrefix2 = this->Makefile->GetSafeDefinition(prefixVar);
targetPrefix = this->Makefile->GetSafeDefinition(prefixVar).c_str();
}
// if there is no suffix on the target use the cmake definition
if (!targetSuffix && suffixVar) {
targetSuffix2 = this->Makefile->GetSafeDefinition(suffixVar);
targetSuffix = this->Makefile->GetSafeDefinition(suffixVar).c_str();
}
// frameworks have directory prefix but no suffix
@@ -3508,19 +3507,19 @@ void cmGeneratorTarget::GetFullNameInternal(
if (this->IsFrameworkOnApple()) {
fw_prefix = this->GetFrameworkDirectory(config, ContentLevel);
fw_prefix += "/";
targetPrefix2 = fw_prefix;
targetSuffix2.clear();
targetPrefix = fw_prefix.c_str();
targetSuffix = nullptr;
}
if (this->IsCFBundleOnApple()) {
fw_prefix = this->GetCFBundleDirectory(config, FullLevel);
fw_prefix += "/";
targetPrefix2 = fw_prefix;
targetSuffix2.clear();
targetPrefix = fw_prefix.c_str();
targetSuffix = nullptr;
}
// Begin the final name with the prefix.
outPrefix = targetPrefix2;
outPrefix = targetPrefix ? targetPrefix : "";
// Append the target name or property-specified name.
outBase += this->GetOutputName(config, artifact);
@@ -3539,7 +3538,7 @@ void cmGeneratorTarget::GetFullNameInternal(
}
// Append the suffix.
outSuffix = targetSuffix2;
outSuffix = targetSuffix ? targetSuffix : "";
}
std::string cmGeneratorTarget::GetLinkerLanguage(

View File

@@ -828,11 +828,8 @@ void cmGlobalGenerator::EnableLanguage(
std::string sharedLibFlagsVar = "CMAKE_SHARED_LIBRARY_";
sharedLibFlagsVar += lang;
sharedLibFlagsVar += "_FLAGS";
std::string const& sharedLibFlags =
this->LanguageToOriginalSharedLibFlags[lang] =
mf->GetSafeDefinition(sharedLibFlagsVar);
if (!sharedLibFlags.empty()) {
this->LanguageToOriginalSharedLibFlags[lang] = sharedLibFlags;
}
// Translate compiler ids for compatibility.
this->CheckCompilerIdCompatibility(mf, lang);

View File

@@ -1826,7 +1826,7 @@ bool cmLocalGenerator::GetShouldUseOldFlags(bool shared,
flagsVar += "_FLAGS";
std::string const& flags = this->Makefile->GetSafeDefinition(flagsVar);
if (!flags.empty() && flags != originalFlags) {
if (flags != originalFlags) {
switch (this->GetPolicyStatus(cmPolicies::CMP0018)) {
case cmPolicies::WARN: {
std::ostringstream e;

View File

@@ -368,6 +368,7 @@ if(BUILD_TESTING)
ADD_TEST_MACRO(CxxSubdirC CxxSubdirC)
ADD_TEST_MACRO(IPO COnly/COnly)
ADD_TEST_MACRO(OutDir runtime/OutDir)
ADD_TEST_MACRO(OutName exe.OutName.exe)
ADD_TEST_MACRO(ObjectLibrary UseCshared)
ADD_TEST_MACRO(NewlineArgs NewlineArgs)
ADD_TEST_MACRO(SetLang SetLang)

View File

@@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.12)
project(OutName C)
add_executable(OutName main.c)
set_property(TARGET OutName PROPERTY PREFIX exe.)
set_property(TARGET OutName PROPERTY SUFFIX .exe)

4
Tests/OutName/main.c Normal file
View File

@@ -0,0 +1,4 @@
int main(void)
{
return 0;
}