簡體   English   中英

CMake add_custom_command 取決於“空格”分隔字符串中的文件名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM