On 2013-03-13 20:59, Matthew Woehlke wrote:
This simple CMakeLists.txt is broken with ninja:cmake_minimum_required(VERSION 2.8.10.20130312) project(Foo) add_executable(foo foo.cpp) target_include_directories(foo PUBLIC $<BUILD_INTERFACE:${Foo_BINARY_DIR}> $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include> ) ...with Ninja, the include directive passed to the compiler is '-I.' (with the binary dir prefix similarly stripped for anything after the ${}). It seems okay with the Makefile generator. This does appear to be a CMake problem, and not a ninja problem, as in the build.ninja I am seeing 'FLAGS = -I.'. It would be nice to have this fixed before 2.8.11 final :-).
The problem is definitely in cmLocalGenerator::ConvertToOutputForExisting. I suspect this is failing because it sees the relative root as always CMAKE_BINARY_DIR, since that is the only directory to which build files get written (and works with Makefiles because the relative root is CMAKE_CURRENT_BINARY_DIR).
Further, it seems to happen with include_directories also... and apparently it has always been broken (at least with 2.8.10.2 also).
-- Matthew -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers
