[cmake-developers] GeneratorExpression test and MSYS

Brad King brad.king at kitware.com
Thu Feb 21 09:39:41 EST 2013


On 02/21/2013 04:16 AM, Stephen Kelly wrote:
> These failures have been occuring since I merged a recent branch extending the test:
> 
>  http://open.cdash.org/testDetails.php?test=178135681&build=2821141
>  http://open.cdash.org/testDetails.php?test=178132011&build=2821111

>From the test output:

CMake Error at D:/Dashboards/My Tests-Win32-x86-MSYSgcc/CMake/Tests/GeneratorExpression/check-common.cmake:3 (message):
  test_target_includes8 is "D:/msys/1.0/empty5/private", not
  "/empty5/private"

It is the MSYS shell that transforms

  /empty5/private

to

  D:/msys/1.0/empty5/private

because it interprets paths starting in '/' as UNIX-like paths relative
to the msys install directory like /usr/bin would.  It transforms the
path to the Windows equivalent whenever launching a program not installed
under the msys directory assuming that the program will not understand
the UNIX-like path.

We can work around this by using two paths so that the ";" prevents the
value from looking like a path.  See the patch below.  From the bottom
hunk context one can see that this worked for the other include paths
only because they all have multiple values.

If you want it to work with only a single path then use a windows path
like c:/empty5/private so that no translation will be done.

-Brad


diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt
index 8a64dc2..fff7c87 100644
--- a/Tests/GeneratorExpression/CMakeLists.txt
+++ b/Tests/GeneratorExpression/CMakeLists.txt
@@ -81,7 +81,7 @@ target_link_libraries(empty2 LINK_PUBLIC empty3 empty4)
 target_link_libraries(empty3 LINK_PUBLIC empty2 empty4)

 add_library(empty5 empty.cpp)
-target_include_directories(empty5 PRIVATE /empty5/private)
+target_include_directories(empty5 PRIVATE /empty5/private1 /empty5/private2)

 add_custom_target(check-part2 ALL
   COMMAND ${CMAKE_COMMAND}
diff --git a/Tests/GeneratorExpression/check-part2.cmake b/Tests/GeneratorExpression/check-part2.cmake
index 177bace..3f7187c 100644
--- a/Tests/GeneratorExpression/check-part2.cmake
+++ b/Tests/GeneratorExpression/check-part2.cmake
@@ -33,4 +33,4 @@ check(test_target_includes4 "/empty1/public;/empty1/private;/empty2/public;/empt
 check(test_target_includes5 "/empty2/public;/empty3/public;/empty2/public;/empty4/public")
 check(test_target_includes6 "/empty3/public;/empty3/private;/empty2/public;/empty3/public;/empty4/public")
 check(test_target_includes7 "/empty1/public;/empty2/public;/empty3/public;/empty4/public")
-check(test_target_includes8 "/empty5/private")
+check(test_target_includes8 "/empty5/private1;/empty5/private2")



More information about the cmake-developers mailing list