[英]CMAKE: performing a file copy AFTER a custom command has run
我有一個如下所示的構建腳本片段:
foreach(...)
...
add_custom_command( OUTPUT ${fn_c} ${fn_s} ${fn_p_c} {fn_p_h}
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} --proto_path=${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${proto_var} --cpp_out=. --plugin=protoc-gen-RBLRPC=${CMAKE_BINARY_DIR}/tools/protoc-gen-RBLRPC --RBLRPC_out=.
DEPENDS ${proto_var}
)
if(${M_S_} OR ${M_C_})
set(MARSHALL_RPC_FILES ${MARSHALL_RPC_FILES} ${fn_p_c})
message(status "copy marshall -------------------")
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/${fn_c}
${CMAKE_CURRENT_BINARY_DIR}/${fn_s}
${CMAKE_CURRENT_BINARY_DIR}/${fn_p_h} DESTINATION ${CMAKE_SOURCE_DIR}/include/rpc/marshall)
endif()
...
endforeach(...)
在執行自定義命令之前不會生成復制的文件,但是 cmake 會在第一次通過腳本時嘗試復制文件。 我歡迎任何解決這個問題的建議,而不會徹底改變我的腳本。
不要使用file(COPY...)
function,而是將以下命令添加到您的add_custom_command
:
COMMAND ${CMAKE_COMMAND} copy ${CMAKE_CURRENT_BINARY_DIR}/${fn_c}
${CMAKE_SOURCE_DIR}/include/rpc/marshall
但是對於你要做的事情,我建議你保持你的源代碼樹干凈,直接添加使用構建目錄中生成的文件。 例如,如果您想從一個源代碼樹創建兩個不同的構建樹,那將會中斷。
編輯:
CMAKE_COMMAND 記錄在聯機手冊頁文檔的變量部分中(搜索 CMAKE_COMMAND 而不是 ${CMAKE_COMMAND}。
在命令行CMAKE -E
將顯示可用的便攜式命令列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.