summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2013-01-23 20:11:04 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2013-01-23 20:11:04 (GMT)
commit95f88fd2a186270b49d58ed0064e0790953f9bc9 (patch)
tree16b1da72ac75955964eacec715c3aa0d89fad73d
parent8b4a2e02236f1535025806a7fbc139b15a17522f (diff)
parent24dcf0c0072d6e0ca5a1203a54b574d1db9e5a7d (diff)
downloadCMake-95f88fd2a186270b49d58ed0064e0790953f9bc9.zip
CMake-95f88fd2a186270b49d58ed0064e0790953f9bc9.tar.gz
CMake-95f88fd2a186270b49d58ed0064e0790953f9bc9.tar.bz2
Merge topic 'fix-target_include_directories-genex'
24dcf0c Make sure generator expressions can be used with target_include_directories.
-rw-r--r--Source/cmTargetPropCommandBase.cxx12
-rw-r--r--Tests/CMakeCommands/target_include_directories/CMakeLists.txt7
2 files changed, 18 insertions, 1 deletions
diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx
index 69aaf17..7f15dcb 100644
--- a/Source/cmTargetPropCommandBase.cxx
+++ b/Source/cmTargetPropCommandBase.cxx
@@ -66,6 +66,14 @@ bool cmTargetPropCommandBase
}
//----------------------------------------------------------------------------
+static bool isGeneratorExpression(const std::string &lib)
+{
+ const std::string::size_type openpos = lib.find("$<");
+ return (openpos != std::string::npos)
+ && (lib.find(">", openpos) != std::string::npos);
+}
+
+//----------------------------------------------------------------------------
bool cmTargetPropCommandBase
::ProcessContentArgs(std::vector<std::string> const& args,
unsigned int &argIndex, bool prepend)
@@ -105,6 +113,10 @@ bool cmTargetPropCommandBase
content += sep + "$<TARGET_PROPERTY:" + args[i]
+ ",INTERFACE_" + this->Property + ">";
}
+ else if(isGeneratorExpression(args[i]))
+ {
+ content += sep + args[i];
+ }
else if (!this->HandleNonTargetArg(content, sep, args[i], args[0]))
{
return false;
diff --git a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
index a0f2ee0..8fa2eae 100644
--- a/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_include_directories/CMakeLists.txt
@@ -33,7 +33,12 @@ target_include_directories(target_include_directories
PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/poison"
)
target_include_directories(target_include_directories
- BEFORE PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/cure"
+ BEFORE PUBLIC "$<$<TARGET_DEFINED:target_include_directories>:${CMAKE_CURRENT_BINARY_DIR}/cure>"
+)
+
+# Has no effect because the target is not defined:
+target_include_directories(target_include_directories
+ BEFORE PUBLIC "$<$<TARGET_DEFINED:notdefined>:${CMAKE_CURRENT_BINARY_DIR}/poison>"
)
add_library(importedlib UNKNOWN IMPORTED)