Как добавить пользовательскую зависимость исходного файла в cmake, которая компилируется в цель в первый раз - PullRequest
0 голосов
/ 13 марта 2020

У меня есть следующий фрагмент CMakefile.txt, который должен генерировать defaultIdentity. c, чтобы он был создан для целевой библиотеки foo.so. На самом деле происходит то, что изначально defaultIdentity. c создается, но не компилируется в foo.so. При последующих запусках он компилируется в foo.so, вероятно, потому что он уже существует. Я предполагаю, что это какое-то время генерации, время сборки, но я совершенно не уверен, как это сделать на самом деле. Так как мне не удалось найти документацию по cmake, которая подробно описывает это, я как бы собрал воедино различные фрагменты, найденные в Интернете.

set(CERTFILE /path/to/certfile)
add_custom_command(OUTPUT defaultIdentity.c
        COMMAND cat ${CERTFILE} > defaultId
        COMMAND xxd -i defaultId > defaultIdentity.c
        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        MAIN_DEPENDENCY ${CERTFILE})

add_custom_target(defaultIdentity DEPENDS defaultIdentity.c)

file(GLOB TKNAME_SOURCES *.[hc] ${CMAKE_CURRENT_BINARY_DIR}/defaultIdentity.c)

add_library(${TKNAME} SHARED ${TKNAME_SOURCES})

add_dependencies(${TKNAME} defaultIdentity)

Может кто-нибудь уточнить, как на самом деле сделать эту работу?

1 Ответ

0 голосов
/ 17 марта 2020

Хорошо, я уверен, что есть способ сделать это, но, кажется, ни я, ни кто-то другой не нашли способ сделать это.

Так как мой источник довольно статичен c, я просто создал файл вручную и добавил его в мои источники. Дело закрыто.

...