Ninja Multi-Config: setting the `GENERATED` source property results in broken Ninja files
// main.cc
#include <iostream>
int main()
{
std::cout << "Hello v@PROJECT_VERSION@!\n";
}
# CMakeLists.txt
cmake_minimum_required(VERSION 3.25)
project(
test VERSION 1.0.0
LANGUAGES CXX
)
configure_file(main.cc main.cc @ONLY)
add_executable(nmcbug ${PROJECT_BINARY_DIR}/main.cc)
# ALERT W/o setting `GENERATED` property everything works fine.
set_property(
SOURCE ${PROJECT_BINARY_DIR}/main.cc
PROPERTY GENERATED TRUE
)
Output:
(🐳:ubuntu/22.04/devel)root@b21d54b74d24:.../tmp/nmcbug/build# cmake -G 'Ninja Multi-Config' -DCMAKE_CONFIGURATION_TYPES='Debug;Release' .. --fresh-- The CXX compiler identification is GNU 12.1.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++-12 - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /work/tmp/nmcbug/build
(🐳:ubuntu/22.04/devel)root@b21d54b74d24:.../tmp/nmcbug/build# cmake --build . --config Debug
ninja: error: 'cmake_object_order_depends_target_nmcbug_RELEASE', needed by '/work/tmp/nmcbug/build/main.cc', missing and no known rule to make it
(🐳:ubuntu/22.04/devel)root@b21d54b74d24:.../tmp/nmcbug/build# cmake --build . --config Release
ninja: error: 'cmake_object_order_depends_target_nmcbug_DEBUG', needed by '/work/tmp/nmcbug/build/main.cc', missing and no known rule to make it
Edited by Alex Turbov