我有一個需要訪問嵌入到special section中的可執行文件中的ELF文件的項目。CMake:將ELF嵌入到可執行文件中
我之前手工製作Makefiles,只是有一個shell腳本,我使用objcopy將我想要嵌入到.o文件的目標複製到可執行文件中,然後鏈接到該文件。
# Create a new section and copy the binary there ($1=input $2=output name)
objcopy --input-target binary --output-target elf64-x86-64 \
--binary-architecture i386 $1 $2.o
現在我想擺脫定製的Makefiles並使用CMake來生成它們。但是,我沒有看到鏈接到這種文件的簡單方法。我能夠創建並添加該文件,但不反對鏈接:
# Invoke script to package module as a library
add_custom_command(OUTPUT ${PACKAGED_FILE}
COMMAND ./package.sh ${MODULE_FILE} ${PACKAGED_FILE}
WORKING_DIRECTORY ${MODULE_DIR}
DEPENDS ${MODULE_FILE}
COMMENT packaging file into ELF object
VERBATIM
)
add_custom_target(${PACKAGED_NAME} ALL DEPENDS ${PACKAGED_FILE})
我試圖用添加:
target_link_libraries(binary ${PROJECT_BINARY_DIR}/${PACKAGED_FILE})
然而,失敗的原因是文件不存在然而。它會,但CMake不知道。將目標名稱作爲鏈接庫添加無助,因爲無法找到它。將它作爲依賴項添加也沒有幫助。有沒有人有一個想法如何完成?
你是否嘗試過使用add_custom_command這個簽名:'add_custom_command(TARGET binary PRE_LINK [你的命令像往常一樣]),它應該在鏈接之前調用你的命令(如果我理解add_custom_command)。 – archz