cmake 多项目(cmake多项目)

cmake 多项目(cmake多项目)中项目 和目标 与 中是不一样的 项目 相当于 解决方案 而 目标 相当于 一个一个的不同类型的项目 我们非常关心解决方案的属性 和项目的属性 包括 名称 版本 语言 路径 描述和网站 CMake 中可以使用多次 命令 在这种情况会是什么样的情况 如果在同一个 存在 命令 以最后一个 命令为主 会覆盖前面的命令 如果用 命令 在子目录的 文件中 也有

大家好,我是讯享网,很高兴认识大家。



项目目标,与 中是不一样的, 项目 相当于 解决方案,而 目标 相当于 一个一个的不同类型的项目

我们非常关心解决方案的属性项目的属性,包括 名称版本语言路径描述和网站

CMake 中可以使用多次 命令,在这种情况会是什么样的情况?
如果在同一个 存在 命令,以最后一个 命令为主,会覆盖前面的命令。
如果用 命令,在子目录的 文件中,也有 命令,那么构建后,都会生成项目。
最好一个项目只只创建一个解决方案,除非一次性创建多个解决方案。

注意:如果创建多个解决方案,那么需要多个 文件,需要在多个子目录中创建 文件。每个 文件中的目标,只会添加到当前的解决方案中。

CMake 路径

为 顶级 文件所在路径, 为 构建输出所在路径,这两个变量与子目录中的 文件无关。

android studio 中 cmake多层目录 cmake 多项目_解决方案
讯享网

CMake 版本

为 CMake 的版本,由 组成。 为 主要版本, 为 次要版本, 为 补丁版本, 为微调版本。

android studio 中 cmake多层目录 cmake 多项目_CMake_02

当前执行 文件

与 区别在于, 表示顶级 文件, 表示当前 文件。

为当前执行 文件所在目录, 为当前执行 文件所在路径, 为 当前执行 文件所在行号。

android studio 中 cmake多层目录 cmake 多项目_解决方案_03

命令,如法如下:

我们使用 设置项目名称。

我们通过 设置项目描述。

我们通过 设置项目版本。

我们通过 设置项目网站。

我们通过 设置项目语言。

CMake 项目名称、描述、网站

CMake 项目路径

: 为 所在路径,例如 。

: 为 构建输出所在路径,例如 。

CMake 项目版本

除非策略 设置为 ,否者不得使用。

版本 的组成,即 。

CMake 项目语言

选择构建项目所需的编程语言,会根据设置的编程语言查找编译器。

支持的语言包括 , (即 ), , (即 ), , , , and 。

默认情况下,语言为 和 。

指定语言为 ,跳过启用任何语言。

案例

android studio 中 cmake多层目录 cmake 多项目_解决方案_04

android studio 中 cmake多层目录 cmake 多项目_解决方案_05

我们会常用 命令,将子目录的目标添加到构建中

不管是在哪个子目录 文件定义的目标,,都会被添加到顶级 的项目中。

实际上,应该是目标不仅仅被添加当前项目中,也会被添加到上一级项目,或上上一级项目中。

我们使用 命令,提供 参数,则子目录构建的目标,并不会添加到父目录的项目中。这种方式,常用于构建示例这种单独的项目示例项目有用但不是必须的项目,通常子目录 应该包含自己的 命令,以边在子目录中生成完整的构建系统。

命令 与 命令的区别?

我们用 命令 也可以加载 子目录中的 文件,例如 。虽然 命令与 命令,都会加载 文件,但是 命令是将子目录中 文件内容导入到父目录的源文件中,而 命令是将子目录中 添加到构建中。

所以,有一个比较明显的区别,都执行 命令,如果使用 那么项目会被覆盖,如果使用 那么会创建子项目。

命令,子目录的变量和执行控制权

我们想在父目录中的 文件中,使用子目录定义的变量,该怎么办?

如果仅仅使用 没有作用,你需要在子目录 文件使用 来定义变量,就算你使用 添加子目录也没有影响。

如果直接使用 ,在子目录 文件使用 来定义变量,也行。因为时子目录 文件内容,不加载到 父目录的 文件中,并没有父目录和子目录的关系。

所以,通过 选项,设置子目录中的变量,可以在父目录中使用。

我们也可以,在使用 命令构建子目录的目标时,通过 命令,将控制权从子目录转移到父目录。

小讯
上一篇 2025-06-08 16:09
下一篇 2025-05-06 15:39

相关推荐

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