summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-11-26 09:54:27 (GMT)
committerStephen Kelly <steveire@gmail.com>2013-11-26 12:01:53 (GMT)
commit7a3e45b9d469e468e4db867d51e92ceeed132b79 (patch)
tree799987b5d663c5c143e948c2fee897dad9ef4218
parentf088a3245001350f9c429e27bd12a3394742b0b8 (diff)
downloadCMake-7a3e45b9d469e468e4db867d51e92ceeed132b79.zip
CMake-7a3e45b9d469e468e4db867d51e92ceeed132b79.tar.gz
CMake-7a3e45b9d469e468e4db867d51e92ceeed132b79.tar.bz2
Export: Prefix relative items with genexes in INSTALL_INTERFACE.
Code such as target_include_directories(foo INTERFACE $<INSTALL_INTERFACE:include$<FOO>> ) should be treated as a relative directory, despite the genex, after the INSTALL_INTERFACE is stripped away. Previously, this would generate a relative directory on export, which would be an error on import, so no policy is needed.
-rw-r--r--Source/cmGeneratorExpression.cxx2
-rw-r--r--Tests/ExportImport/Export/CMakeLists.txt8
-rw-r--r--Tests/ExportImport/Import/A/deps_iface.c1
3 files changed, 10 insertions, 1 deletions
diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx
index f34a35b..2e66d78 100644
--- a/Source/cmGeneratorExpression.cxx
+++ b/Source/cmGeneratorExpression.cxx
@@ -245,7 +245,7 @@ static void prefixItems(const std::string &content, std::string &result,
result += sep;
sep = ";";
if (!cmSystemTools::FileIsFullPath(ei->c_str())
- && cmGeneratorExpression::Find(*ei) == std::string::npos)
+ && cmGeneratorExpression::Find(*ei) != 0)
{
result += prefix;
}
diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt
index 89c767f..0e2828e 100644
--- a/Tests/ExportImport/Export/CMakeLists.txt
+++ b/Tests/ExportImport/Export/CMakeLists.txt
@@ -327,6 +327,8 @@ target_include_directories(testLibRequired INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest5$<0:>>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/$<0:>installIncludesTest6>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest7>
+ $<INSTALL_INTERFACE:installIncludesTest8/$<0:>>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest8$<0:>>
)
install(TARGETS
testLibIncludeRequired1
@@ -360,6 +362,8 @@ file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest6")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest6/installIncludesTest6.h" "// No content\n")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest7")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest7/installIncludesTest7.h" "// No content\n")
+file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest8")
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest8/installIncludesTest8.h" "// No content\n")
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest/installIncludesTest.h"
DESTINATION installIncludesTest
@@ -388,6 +392,10 @@ install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest7/installIncludesTest7.h"
DESTINATION installIncludesTest7
)
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest8/installIncludesTest8.h"
+ DESTINATION installIncludesTest8
+)
install(TARGETS testLibDepends testSharedLibDepends EXPORT DependsExp DESTINATION lib )
install(EXPORT DependsExp FILE testLibDependsTargets.cmake DESTINATION lib/cmake/testLibDepends)
diff --git a/Tests/ExportImport/Import/A/deps_iface.c b/Tests/ExportImport/Import/A/deps_iface.c
index 0dc8be2..953d0ad 100644
--- a/Tests/ExportImport/Import/A/deps_iface.c
+++ b/Tests/ExportImport/Import/A/deps_iface.c
@@ -11,6 +11,7 @@
#include "installIncludesTest5.h"
#include "installIncludesTest6.h"
#include "installIncludesTest7.h"
+#include "installIncludesTest8.h"
#ifndef testLibRequired_IFACE_DEFINE
#error Expected testLibRequired_IFACE_DEFINE