我有一个在预链接阶段执行的自定义命令。我想要做的是计算将成为我的可执行文件一部分的所有部分的校验和。然后我想将此校验和作为全局变量链接到我的可执行文件中。
到目前为止,我可以计算将链接到我的可执行文件的所有库的校验和。但是我还需要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)
所以我的问题是:如何获取可执行目标的目标文件?
每次我尝试访问 executable_target 的一些生成器表达式并传递它时,CMake 由于循环依赖关系而崩溃(这对于输出可执行文件是正确的,但对于目标文件则不然,因为它们已经存在于预链接阶段)。