Xcode: Teach XCODE_ATTRIBUTE target properties about generator expressions

Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
This commit is contained in:
Gregor Jasny 2015-02-11 20:48:43 +01:00 committed by Brad King
parent 0ec1f45a13
commit bf8f9c29e7
9 changed files with 39 additions and 1 deletions

View File

@ -8,3 +8,9 @@ the generated Xcode project. Ignored on other generators.
See the :variable:`CMAKE_XCODE_ATTRIBUTE_<an-attribute>` variable
to set attributes on all targets in a directory tree.
Contents of ``XCODE_ATTRIBUTE_<an-attribute>`` may use
"generator expressions" with the syntax ``$<...>``. See the
:manual:`cmake-generator-expressions(7)` manual for available
expressions. See the :manual:`cmake-buildsystem(7)` manual
for more on defining buildsystem properties.

View File

@ -0,0 +1,5 @@
xcode-attribute-genex
---------------------
* The :prop_tgt:`XCODE_ATTRIBUTE_<an-attribute>` target property learned
to support generator expressions.

View File

@ -2436,8 +2436,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
if (!attribute.empty())
{
cmGeneratorExpression ge;
std::string processed = ge.Parse(i->second.GetValue())
->Evaluate(this->CurrentMakefile, configName);
buildSettings->AddAttribute(attribute.c_str(),
this->CreateString(i->second.GetValue()));
this->CreateString(processed));
}
}
}

View File

@ -1,3 +1,5 @@
include(RunCMake)
run_cmake(XcodeFileType)
run_cmake(XcodeAttributeGenex)
run_cmake(XcodeAttributeGenexError)

View File

@ -0,0 +1,7 @@
set(expect "TEST_HOST = \"[^;\"]*Tests/RunCMake/XcodeProject/XcodeAttributeGenex-build/[^;\"/]*/some\"")
file(STRINGS ${RunCMake_TEST_BINARY_DIR}/XcodeAttributeGenex.xcodeproj/project.pbxproj actual
REGEX "TEST_HOST = .*;" LIMIT_COUNT 1)
if(NOT "${actual}" MATCHES "${expect}")
message(SEND_ERROR "The actual project contains the line:\n ${actual}\n"
"which does not match expected regex:\n ${expect}\n")
endif()

View File

@ -0,0 +1,4 @@
enable_language(C)
add_executable(some main.c)
add_executable(another main.c)
set_property(TARGET another PROPERTY XCODE_ATTRIBUTE_TEST_HOST "$<TARGET_FILE:some>")

View File

@ -0,0 +1 @@
1

View File

@ -0,0 +1,6 @@
CMake Error:
Error evaluating generator expression:
\$<NOTAGENEX>
Expression did not evaluate to a known generator expression

View File

@ -0,0 +1,4 @@
enable_language(C)
add_executable(some main.c)
add_executable(another main.c)
set_property(TARGET another PROPERTY XCODE_ATTRIBUTE_TEST_HOST "$<NOTAGENEX>")