[英]CMake add_custom_command DEPENDS on filenames that are in a `space` separated string
add_custom_command(
OUTPUT my_output.out
COMMAND ${MY_TOOL} ${PARAMETERS}
DEPENDS ${MY_OBJECT_FILES}
VERBATIM)
我的add_custom_command
中有上面的 add_custom_command,它DEPENDS
於從列表生成的文件名( MY_OBJECT_FILES
):
set(MY_OBJECT_FILES "")
foreach(config ${CONFIGURATIONS})
set(MY_OBJECT_FILES "${MY_OBJECT_FILES} ${CMAKE_CURRENT_BINARY_DIR}/generated-file-${config}.o")
endforeach()
上面的foreach
循環生成一個字符串,其中包含所有 object 文件的名稱,由whitespace
分隔。 但是,當 cmake 構建 built.make 時,它會在開頭和每個whitespace
之前添加額外的\
並且它會與構建混淆。
它看起來像這樣:
my_output.out: \ /home/user/project/build/generated-file-config1.o\ /home/user/project/build/generated-file-config2.o\ /home/user/project/build/generated-file-config3.o\
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/home/user/project/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Generating my_output.out"
/opt/bin/my_tool -parameter1=5 -parameter2=4
如何解決此問題並為DEPENDS
提供正確的whitespace
分隔文件列表?
separate_arguments(MY_OBJECT_FILES UNIX_COMMAND "${MY_OBJECT_FILES}")
解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.