cmake:安装(文件等)和文件(安装等)之间的区别

Ken*_*edy 5 cmake

我正在学习 cmake,但对以下事情感到困惑:

我正在尝试将文件移动到特定位置,我是这样做的:

file(
      INSTALL file.txt DESTINATION ../install_dir
    )
Run Code Online (Sandbox Code Playgroud)

这工作得很好。这将“file.txt”移动到指定的目的地。

但是后来我尝试这样:

install (
         FILES ./file.txt DESTINATION ./install_dir
        )
Run Code Online (Sandbox Code Playgroud)

仅使用“安装”无法按预期工作。该文件未安装在该位置。有人可以向我解释一下区别吗?为什么它在第一种情况下有效,但在仅使用 install 命令时无效?谢谢你。

Rei*_*ica 5

这两个命令做不同的事情。install(FILES fil DESTINATION dest) 指示 CMake 生成构建规则,以便在运行安装步骤(或等效步骤)时将文件fil复制到其中。destmake install

file(INSTALL ...)在配置时立即评估,而 CMake 正在解析CMakeLists.txt文件。请注意,此签名主要用于上述安装步骤的 CMake 内部实现:它打印以安装为主题的状态消息等。如果您只想在配置时复制文件,您可能更喜欢file(COPY)file(COPY_IF_DIFFERENT)