Ninja dependency cycle error with OBJECT_DEPENDS
I need to make a hack in my CMake project. With this hack one of sources files must be compiled before any other files. It works with Makefile generator. But with Ninja generator I get error ninja: error: dependency cycle:
. I tried to find any info how to fix this but no success.
Simplified CMakeLists.txt
:
cmake_minimum_required(VERSION 3.0)
set(CMAKE_VERBOSE_MAKEFILE ON)
project(pchtest CXX)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_executable(${PROJECT_NAME} "main.cpp" "pch.cpp" "pch.h" "pch_dummy.cpp")
set_source_files_properties(pch.cpp PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pchtest.dir/pch_dummy.cpp.o)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/pch.h.gch
COMMAND mv ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pchtest.dir/pch.cpp.o ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/pch.h.gch
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pchtest.dir/pch_dummy.cpp.o ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pchtest.dir/pch.cpp.o
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/pch.h.gch
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/pchtest.dir/pch.cpp.o
COMMENT "Copy PCH"
)
set_source_files_properties(main.cpp PROPERTIES OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/pch.h.gch)
Error:
ninja: error: dependency cycle: CMakeFiles/pch.h.gch -> CMakeFiles/pchtest.dir/pch.cpp.o -> CMakeFiles/pchtest.dir/pch_dummy.cpp.o -> cmake_object_order_depends_target_pchtest -> CMakeFiles/pch.h.gch
If I comment this line in CMake sources ninja works.