什么是CMake安装时间?

Arn*_*rne 10 cmake

来自官方文档的引用:

"指定在安装时运行的规则."

什么是安装时间?

问题在于我:我在Linux上,软件是从只是依赖关系和数据的软件包安装的.没有CMake可以在这里做任何事情.因此,软件的安装时间超出了CMake的范围.那究竟是什么意思呢?

Mic*_*iak 6

我想扩展一下 ComicSansMS 给你的答案。

正如他所提到的 - CMake 会生成一个额外的目标来调用installmake工具(当您使用基于 Makefile 的生成器时)。

您可能看起来很奇怪,因为 Linux 使用的是软件包系统。然而,install目标仍然有用甚至是必要的:

  1. 当您开发应用程序时,您可能需要将(移动二进制文件和可能的一些包含文件)安装到某个位置,以便您的某些项目可能会相互看到。例如,您可以开发一个库和一组使用它的非相关应用程序。然后这个库必须安装在某个地方才能看到。这并不意味着你需要把它放到/usr目录中;你可以使用你的/home.
  2. Linux 包准备过程需要一个安装步骤。例如,RPM 打包系统在构建 rpm 包文件时主要执行三个步骤:配置项目,然后编译和链接,最后安装到某个位置。来自该位置的所有文件都被打包到 rpm 文件中。

  • 不要使用“安装”这个词来定义安装。是复制还是移动动作?特别是“这个库必须安装在某个地方......” (2认同)

Com*_*sMS 5

构建CMake项目大致可以分为三个阶段:

  • 配置时间。这包括运行cmake自身时发生的所有事情。此阶段涉及检查主机系统的某些属性,并在所选配置下为该平台生成特定的构建文件。
  • 建立时间。这包括从CMake生成的文件实际构建项目时发生的所有事情(例如运行cmake --build或时make)。这是所有实际编译和链接的地方,因此在构建阶段结束时,您有了可用的二进制文件。
  • 安装时间。这包括运行INSTALLCMake生成的目标时发生的所有事情(例如运行时cmake --build --target installmake install)。这需要将生成到构建树中的二进制文件复制到另一个目录。请注意,如果您只对运行二进制文件感兴趣,则构建树中包含很多不再需要的内容。示例包括所有中间构建工件,例如在配置阶段生成的构建文件或在构建阶段创建的中间目标文件。此外,安装阶段可能包括其他步骤,以确保在构建过程中生成的二进制文件是可移植的。例如,在Linux系统上,您可能要从二进制文件的共享库搜索路径中删除构建目录,并用可移植的等效目录替换。因此,安装阶段可能不仅仅将所有重要文件复制到新目录中。

请注意,最后一个阶段是可选的。如果您不想支持调用make install,但更喜欢另一种部署机制,你根本就没有使用install命令在你的CMake的脚本,没有INSTALL目标将产生。

  • 对于那些刚接触 cmake 的人来说,根据安装定义安装并不是很有帮助。 (3认同)