I want to generate files in the per-configuration build directory:
add_executable(test_generator_gen test_generator.cpp)
target_compile_definitions(test_generator_gen PRIVATE GENERATE)
target_link_libraries(test_generator_gen YOMM2::yomm2)
add_custom_command(
OUTPUT ${GENERATED_FILES}
DEPENDS test_generator_gen
COMMAND test_generator_gen
WORKING_DIRECTORY $<TARGET_FILE_DIR:test_generator_gen>
)
The files are generated where I want (e.g. ./builds/headers-only/tests/Debug/test_generator_slots.hpp
. My problem is, what do I put in ${GENERATED_FILES}
? I tried what seemed natural to me:
add_custom_command(
OUTPUT $<TARGET_FILE_DIR:test_generator_gen>/test_generator_slots.hpp
DEPENDS test_generator_gen
COMMAND test_generator_gen
WORKING_DIRECTORY $<TARGET_FILE_DIR:test_generator_gen>
)
# ...
…but I get an error:
CMake Error at tests/CMakeLists.txt:95 (add_custom_command):
[cmake] Error evaluating generator expression:
[cmake]
[cmake] $<TARGET_FILE_DIR:test_generator_gen>
[cmake]
[cmake] No target "test_generator_gen"
I am puzzled. Why is the same generator expression in the same command accepted for some arguments and not others? And how do I specify the OUTPUT correctly?
cmake 3.22.1