Пользовательская команда не выполняется с параметром --target в cmake

Дополнительный вопрос к этому вопросу: cmake project собирает только один конкретный исполняемый файл (и его зависимости)

У меня есть заказная цель, поэтому она будет запускаться каждый раз, когда я что-то компилирую в своем проекте. Теперь, когда я вызываю явную цель, как было задано в вопросе выше, эта пользовательская команда больше не выполняется. Код:

add_custom_target(
    custom_command
    ALL
    DEPENDS hash.h
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "[INFO] CMake generating special *.h file from custom command magic."
)

Я уже пытался удалить ALL директива, но это ничего не изменило.

Забыл добавить: я использую cmake/3.13.4 составлено из источника.

1 ответ

Решение

Извините за более поздний ответ, но работа была сумасшедшей. Поэтому после того, как я прочитал комментарии @Th.Thielemann и @squareskittles, я перечитал документацию по cmake и нашел свое решение. Следующий код был написан под cmake/3.0.0 Давным-давно

add_custom_command( 
    OUTPUT some_header.h
    COMMAND cat ${BISON_HEADER} other_header.h | awk -f some_wak_file.awk > some_header.h
    DEPENDS ${BISON_HEADER}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)

add_custom_target(
    custom_command
    ALL
    DEPENDS some_header.h
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    COMMENT "[INFO] CMake generating special *.h file from custom command magic."
)

После прочтения снова на документации для cmake/3.13 стало совершенно очевидно, что это можно записать в более простой форме:

add_custom_target(
    timex_utilities_hash 
    ALL
    COMMAND cat ${BISON_HEADER} other_header.h | awk -f some_wak_file.awk > some_header.h
    DEPENDS ${BISON_HEADER}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)

Еще раз спасибо @Th. Thielemann и @squareskittles для пациентов и пациентов, чтобы проверить еще раз!

Другие вопросы по тегам