У меня есть следующий фрагмент 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)
Может кто-нибудь уточнить, как на самом деле сделать эту работу?