Я работаю с генератором кода, который создает C ++, и файлом CMakeLists.txt, к сожалению, я не могу использовать это в своем основном файле CMakeLists.txt для тестирования.
Например, у вас есть следующий файл CMakeLists.txt:
project(SomeProject CXX C)
add_custom_command(OUTPUT ${SRCS}
COMMAND ${CODEGEN_CLI_PATH} -i "${INPUT}" -o "${OUT}"
COMMENT "Generating sources"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
VERBATIM
)
add_custom_target(CODEGEN
DEPENDS
${SRCS}
)
# Needs to be executed after the custom command
add_subdirectory(${GENERATED_CMAKE_LISTS_LOCATION})
Можно ли использовать такие функции, как add_subdirectory
, только после выполнения пользовательских команд для определенной цели, например CODEGEN
?
Я уже пытался выполнить его, добавив дополнительную строку к существующей пользовательской команде:
COMMAND ${CMAKE_COMMAND} -D DIR=${GENERATED_CMAKE_LISTS_LOCATION} -P add_subdirectories.cmake
К сожалению, это не работает, потому что не разрешено выполнять такие функции, как add_subdirectory
в режиме сценария.
Также мне не удается вызвать пользовательские функции (которые выполняют add_subdirectory
) из add_custom_command
, которые находятся в том же файле.