Как я могу включить файл зависимости, сгенерированный пользовательской командой в cmake для GNU make? - PullRequest
0 голосов
/ 10 апреля 2020

Я интегрировал инструмент, который генерирует некоторый код из текстового файла в среде сборки на основе CMake.

Этот инструмент также может генерировать файл зависимостей в формате make GNU (почти как gcc -MD делает это для c файлов).

Я хотел бы включить этот файл зависимостей в make-файлы, сгенерированные CMake, чтобы корректно перестраивать при необходимости. К сожалению, я не смог найти правильный способ сделать это.

Я пытался:

У кого-нибудь была похожая проблема?

1 Ответ

0 голосов
/ 10 апреля 2020

попытайтесь определить ваш файл как зависимость вашего add_custom_target:

cmake_minimum_required(VERSION 3.0)
project(Custom_Command_TEST)
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/your_gen_file.txt"
                   COMMAND /bin/date > "${CMAKE_BINARY_DIR}/your_gen_file.txt"
                   COMMAND /bin/echo "RUNNING COMMAND")

add_custom_target(GenerateFile
                  /bin/echo "RUNNING TARGET"
                  DEPENDS "${CMAKE_BINARY_DIR}/your_gen_file.txt")

add_executable(${PROJECT_NAME} main.cpp)
add_dependencies(${PROJECT_NAME} GenerateFile)

только перестроит target GenerateFile. Вы можете поместить шаг генерации .txt как COMMAND в add_custom_command.

вывод первой сборки:

[ 33%] Generating your_gen_file.txt
RUNNING COMMAND
RUNNING TARGET
[ 33%] Built target GenerateFile
[ 66%] Building CXX object CMakeFiles/Custom_Command_TEST.dir/main.cpp.o
[100%] Linking CXX executable Custom_Command_TEST
[100%] Built target Custom_Command_TEST

вывод второй сборки:

RUNNING TARGET
[ 33%] Built target GenerateFile
[100%] Built target Custom_Command_TEST

Если вы хотите восстановить все заново, вам нужно make clean.

Вы также можете проверить это более раннее сообщение

...