У меня есть пользовательская команда, которая выполняется на этапе предварительного связывания. Я хочу вычислить контрольную сумму всех частей, которые будут частью моего исполняемого файла. Затем я хочу связать эту контрольную сумму как глобальную переменную с моим исполняемым файлом.
Пока что я могу вычислить контрольную сумму всех библиотек, которые будут связаны с моим исполняемым файлом. Но мне также нужна контрольная сумма уже существующего (потому что он уже построен) объектного файла exe. Есть ли способ получить доступ к этому объектному файлу?
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/checksum.cpp
PRE_LINK
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/checksum_generator.cmake" ${LIB_DEPENDENCIES} <object_file_of_executable_target>
DEPENDS ${LIB_DEPENDENCIES}
)
add_library(checksum STATIC ${CMAKE_CURRENT_BINARY_DIR}/checksum.cpp)
target_link_libraries(executable_target PUBLIC checksum)
Итак, мой вопрос: как я могу получить объектный файл исполняемой цели?
Каждый раз, когда я пытаюсь получить доступ к какому-либо выражению генератора executetable_target и передать его, CMake падает из-за циклических зависимостей (что верно для выходного исполняемого файла, но не для объектных файлов, поскольку они уже существуют в преэтап связывания).