Полагаю, вы неправильно истолковали роль CMake. Короче говоря, CMake генерирует файлы сборки для серверной системы по вашему выбору (Make, ninja и т. Д.). Это кратко рассмотрено здесь , где шаг настройки / генерации кратко документирован вместе с тем, как он предшествует фактическому этапу сборки.
Непонятно, чего именно вы пытаетесь достичь, но может быть полезно определить пользовательские команды и использовать их выходные данные для привязки их к пользовательским целям для дальнейшего объединения зависимостей (см. DEPENDS
здесь ). например,
cmake_minimum_required(VERSION 3.11)
project(foobar)
set(FOO_FILES "foo.txt")
add_custom_command(OUTPUT ${FOO_FILES}
COMMAND ${CMAKE_COMMAND} -E touch ${FOO_FILES}
COMMAND echo hello >> ${FOO_FILES}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Creating ${FOO_FILES}"
VERBATIM)
add_custom_target(foo DEPENDS ${FOO_FILES})
set(BAR_FILES "bar_dummy.txt") # this is only use to link the custom command to the corresponding custom target
add_custom_command(OUTPUT ${BAR_FILES}
COMMAND ${CMAKE_COMMAND} -E touch ${BAR_FILES}
COMMAND cat ${FOO_FILES}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Displaying ${FOO_FILES}"
VERBATIM)
add_custom_target(bar DEPENDS ${BAR_FILES})
add_dependencies(bar foo)
Однако вам, возможно, придется учитывать вероятность того, что вы столкнетесь с этим инструментом, и, следовательно, может быть понятнее выполнить требуемый шаг до настройки вашего проекта.