代码之家  ›  专栏  ›  技术社区  ›  Bibrak

CMake add_custom_command对以“空格”分隔的字符串中的文件名执行DEPENDS

  •  0
  • Bibrak  · 技术社区  · 4 年前
    add_custom_command(
      OUTPUT my_output.out
      COMMAND ${MY_TOOL} ${PARAMETERS}
      DEPENDS ${MY_OBJECT_FILES}
      VERBATIM)
    

    我有上面的 add_custom_command 在我的cmake 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 循环生成一个字符串,该字符串包含由 whitespace .但是当cmake建造大楼时,它会额外投入 \ 在开始和之前 空白 它把建筑搞砸了。

    它看起来是这样的:

    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 
    

    如何解决此问题并提供 取决于 带有适当的 空白 文件的分隔列表?

    1 回复  |  直到 4 年前
        1
  •  0
  •   Bibrak    4 年前

    separate_arguments(MY_OBJECT_FILES UNIX_COMMAND "${MY_OBJECT_FILES}")

    解决问题。

    推荐文章