中项目和目标,与 中是不一样的, 项目 相当于 解决方案,而 目标 相当于 一个一个的不同类型的项目。
我们非常关心解决方案的属性和项目的属性,包括 名称、版本、语言、路径、描述和网站。
CMake 中可以使用多次 命令,在这种情况会是什么样的情况?
如果在同一个 存在 命令,以最后一个 命令为主,会覆盖前面的命令。
如果用 命令,在子目录的 文件中,也有 命令,那么构建后,都会生成项目。
最好一个项目只只创建一个解决方案,除非一次性创建多个解决方案。
注意:如果创建多个解决方案,那么需要多个 文件,需要在多个子目录中创建 文件。每个 文件中的目标,只会添加到当前的解决方案中。
CMake 路径
为 顶级 文件所在路径, 为 构建输出所在路径,这两个变量与子目录中的 文件无关。
CMake 版本
为 CMake 的版本,由 组成。 为 主要版本, 为 次要版本, 为 补丁版本, 为微调版本。

当前执行 文件
与 区别在于, 表示顶级 文件, 表示当前 文件。
为当前执行 文件所在目录, 为当前执行 文件所在路径, 为 当前执行 文件所在行号。

命令,如法如下:
我们使用 设置项目名称。
我们通过 设置项目描述。
我们通过 设置项目版本。
我们通过 设置项目网站。
我们通过 设置项目语言。
CMake 项目名称、描述、网站
CMake 项目路径
: 为 所在路径,例如 。
: 为 构建输出所在路径,例如 。

CMake 项目版本
除非策略 设置为 ,否者不得使用。
版本 的组成,即 。
CMake 项目语言
选择构建项目所需的编程语言,会根据设置的编程语言查找编译器。
支持的语言包括 , (即 ), , (即 ), , , , and 。
默认情况下,语言为 和 。
指定语言为 ,跳过启用任何语言。
案例


我们会常用 命令,将子目录的目标添加到构建中。
不管是在哪个子目录的 文件定义的目标,,都会被添加到顶级 的项目中。
实际上,应该是目标不仅仅被添加到当前项目中,也会被添加到上一级项目,或上上一级项目中。
我们使用 命令,提供 参数,则子目录构建的目标,并不会添加到父目录的项目中。这种方式,常用于构建示例这种单独的项目,示例项目有用但不是必须的项目,通常子目录 应该包含自己的 命令,以边在子目录中生成完整的构建系统。
命令 与 命令的区别?
我们用 命令 也可以加载 子目录中的 文件,例如 。虽然 命令与 命令,都会加载 文件,但是 命令是将子目录中 文件内容导入到父目录的源文件中,而 命令是将子目录中 添加到构建中。
所以,有一个比较明显的区别,都执行 命令,如果使用 那么项目会被覆盖,如果使用 那么会创建子项目。
命令,子目录的变量和执行控制权
我们想在父目录中的 文件中,使用子目录定义的变量,该怎么办?
如果仅仅使用 没有作用,你需要在子目录 文件使用 来定义变量,就算你使用 添加子目录也没有影响。
如果直接使用 ,在子目录 文件使用 来定义变量,也行。因为时子目录 文件内容,不加载到 父目录的 文件中,并没有父目录和子目录的关系。
所以,通过 选项,设置子目录中的变量,可以在父目录中使用。
我们也可以,在使用 命令构建子目录的目标时,通过 命令,将控制权从子目录转移到父目录。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177919.html