Browse Source

Genex: Fix processing multiple include directories for relative paths

Re-insert the semicolon which was removed during splitting.

Commit d777b8e7 (Genex: Allow relative paths in INSTALL_INTERFACE.,
2013-07-25) introduced the prefixItems method to allow relative paths
in the argument of the INSTALL_INTERFACE expression. That method was
buggy in that it did not re-introduce the semicolon separator in
the result.

This bug also affects paths which are already absolute in user code.
Stephen Kelly 12 years ago
parent
commit
6f98f4ac92
2 changed files with 4 additions and 1 deletions
  1. 3 0
      Source/cmGeneratorExpression.cxx
  2. 1 1
      Tests/ExportImport/Export/CMakeLists.txt

+ 3 - 0
Source/cmGeneratorExpression.cxx

@@ -238,9 +238,12 @@ static void prefixItems(const std::string &content, std::string &result,
 {
   std::vector<std::string> entries;
   cmGeneratorExpression::Split(content, entries);
+  const char *sep = "";
   for(std::vector<std::string>::const_iterator ei = entries.begin();
       ei != entries.end(); ++ei)
     {
+    result += sep;
+    sep = ";";
     if (!cmSystemTools::FileIsFullPath(ei->c_str())
         && cmGeneratorExpression::Find(*ei) == std::string::npos)
       {

+ 1 - 1
Tests/ExportImport/Export/CMakeLists.txt

@@ -159,7 +159,7 @@ set_property(TARGET testLibRequired APPEND PROPERTY
     $<BUILD_INTERFACE:$<TARGET_PROPERTY:testLibIncludeRequired5,INTERFACE_INCLUDE_DIRECTORIES>>
     # Test that the below is non-fatal
     $<$<STREQUAL:one,two>:$<TARGET_PROPERTY:not_a_target,INTERFACE_INCLUDE_DIRECTORIES>>
-    $<INSTALL_INTERFACE:include/testLibIncludeRequired7>
+    $<INSTALL_INTERFACE:include/testLibIncludeRequired7;include/testLibIncludeRequired4>
 )
 
 set_property(TARGET testLibRequired APPEND PROPERTY