Dear users,

Today I tried to bootstrap our app with CMake 3.5.2. Unfortunately it
caused problems in one of our custom functions we created. This is for the
Visual Studio 2013 64bit generator.

We have a function to create tests that accepts an 'INCLUDES' parameter,
and we tend to use generator expressions to pass include directories from
other libraries in the solution, i.e. something like this:

add_test(
    TARGET TestName
    INCLUDES
        $<TARGET_PROPERTY:Lib1,INTERFACE_INCLUDE_DIRECTORIES>
        $<TARGET_PROPERTY:Lib2,INCLUDE_DIRECTORIES>
     LIBRARIES
         AnotherLib
         YetAnotherLib
    SOURCES
        TestSource1.cpp
        TestSource2.cpp
)

Inside the function definition we use cmake_parse_arguments to parse these
arguments, i.e. something like this:
function(add_test)
     cmake_parse_arguments(
     PARSED_ARGS
     ""
     "TARGET"
     "SOURCES;LIBRARIES;INCLUDES"
     ${ARGN}
)

If I now inspect the value of ${PARSED_ARGS_INCLUDES} I see the result I at
least expected, namely
"$<TARGET_PROPERTY:Lib1,INTERFACE_INCLUDE_DIRECTORIES>;$<TARGET_PROPERTY:Lib2,INCLUDE_DIRECTORIES>".
This value is passed on to target_include_directories inside the function,
like so:
target_include_directories(${PARSED_ARGS_TARGET}
  PRIVATE ${PARSE_ARGS_INCLUDES}
)

It is this line that starts producing unexplainable errors that look like
this:
CMake Error in ../CMakeLists.txt:
  Found relative path while evaluating include directories of
  "TestName":

    "PTARGET_PROPERTY:Lib1,INTERFACE_INCLUDE_DIRECTORIES>"

The first letter, here 'P', can be many letters, it seems some random
character appear here, including non-printable characters.

What am I looking at here? Are we using some functionality that was removed
or changed from CMake 3.5.2. From the release notes I don't see anything
that could be related.

Sincerely,
Jakob
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to