【问题标题】:Force execution of CMake install directive强制执行 CMake 安装指令
【发布时间】:2021-04-16 13:20:55
【问题描述】:

我有一个 CMakeLists.txt,我在其中按特定顺序复制文件,但执行顺序似乎是随机的:

#First Installation
   install(DIRECTORY ${SIT_AW_FIRST_WORKSPACE_DIR}/ DESTINATION ${WS_DESTINATION_DIR})

#Second Installation that should overwrite a subset of files
   install(DIRECTORY ${SIT_AW_SECOND_WORKSPACE_DIR}/ DESTINATION ${WS_DESTINATION_DIR})


Output :


-- Installing: /opt/FOO/share/baz/xml/Login.xml

-- Up-to-date: /opt/FOO/share/baz/xml/Login.xml

第二个文件不会覆盖第一个文件,因为它们具有相同的时间戳和相同的名称,但它们的大小不同。有没有办法强制复制?

【问题讨论】:

    标签: c++ cmake cmakelists-options


    【解决方案1】:

    我认为使用 PATTERN 和 EXCLUDE 选项而不是尝试用另一个文件覆盖一个文件可能会获得更好的成功。你可以试试这样的:

    #First Installation
    install(DIRECTORY ${SIT_AW_FIRST_WORKSPACE_DIR}/ DESTINATION ${WS_DESTINATION_DIR}
            PATTERN "Login.xml" EXCLUDE)
    
    #Second Installation that should overwrite a subset of files
    install(DIRECTORY ${SIT_AW_SECOND_WORKSPACE_DIR}/ DESTINATION ${WS_DESTINATION_DIR})
    

    您可以在此处阅读 CMake 文档以及此处的详细信息:https://cmake.org/cmake/help/v3.18/command/install.html#installing-directories

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多