Object libraries and relative paths in Ninja

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Object libraries and relative paths in Ninja

Daniel Eiband

Hi,

 

For a simple test I've got the following directory structure:

 

|- build

|- project

|  |- CMakeLists.txt

|  |- Main.cpp

|- CMakeLists.txt

|- Test.cpp

 

project/CMakeLists.txt has the following content:

 

  cmake_minimum_required(VERSION 3.12)

 

  project(Reproducer LANGUAGES CXX)

 

  add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/.." "${CMAKE_CURRENT_BINARY_DIR}/..")

 

  add_executable(Reproducer)

  target_sources(Reproducer PRIVATE Main.cpp)

  target_link_libraries(Reproducer PRIVATE ReproducerLibrary)

 

 

And CMakeLists.txt has the following content:

 

  add_library(ReproducerLibrary OBJECT)

  target_sources(ReproducerLibrary PRIVATE Test.cpp)

 

 

When I now run the commands:

 

cd build

cmake.exe -G Ninja ..\..\project

cmake.exe --build .

 

Then I get the error:

 

ninja: error: '<absolute-path>/ReproducerLibrary.dir/Test.cpp.obj', needed by 'Reproducer.exe', missing and no known rule to make it

 

I noticed, that the build.ninja the build rule for Test.cpp.obj has a relative path, whereas the link dependency to Test.cpp.obj is an absolute path.

 

Is this a known issue?

 

Regards,

Daniel


--

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:
https://cmake.org/mailman/listinfo/cmake