Wrapping configure_file function breaks Ninja Multi-Config generator when set_source_files_properties is used.
Isolated a breakage observed with Ninja Multi-Config generator involving the wrapping of configure_file and usage of set_source_files_properties - with the attached minimal example mintest.tar.gz:
CMakeLists.txt:
# Minimum required version of CMake
cmake_minimum_required(VERSION 3.12)
# set CMake project name
project(TEST)
function(configure_file file targetfile)
_configure_file(${file} ${targetfile} ${ARGN})
set_source_files_properties(${targetfile} PROPERTIES GENERATED TRUE)
endfunction(configure_file)
configure_file(test.c.in "${CMAKE_CURRENT_BINARY_DIR}/test.c" @ONLY)
add_executable(test "${CMAKE_CURRENT_BINARY_DIR}/test.c")
test.c.in:
int main() { return 0; }
Output from the above:
user@ubuntu:~/mintest$ mkdir build
user@ubuntu:~/mintest$ cd build/
user@ubuntu:~/mintest/build$ cmake .. -G Ninja\ Multi-Config && ninja
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cyapp/mintest/build
ninja: error: 'cmake_object_order_depends_target_test_RELEASE', needed by 'test.c', missing and no known rule to make it
user@ubuntu:~/mintest/build$
Edited by Craig Scott