如何构建CMake项目? [英] How do I build a CMake project?

查看:24
本文介绍了如何构建CMake项目?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚从互联网上获得了一个任意的CMake项目,我不确定如何编译它。我需要运行哪些命令才能从命令行生成它?

推荐答案

基本步骤

如果您使用的是Unix-y操作系统,如Linux或MacOS,则应运行:

$ cmake -DCMAKE_BUILD_TYPE=Release -S /path/to/source-dir -B /path/to/build-dir
$ cmake --build /path/to/build-dir
这里,/path/to/source-dir是包含根级别CMakeLists.txt的目录,这通常是源代码管理存储库的根。同时,/path/to/build-dir是一个不同的目录(还不需要存在),CMake将使用它来存储生成的构建系统及其输出。这称为树外构建。您应该永不尝试使用CMake进行树内生成,因为可能会发生名称冲突,并且在清理生成的文件时会遇到困难。

使用单配置生成器(如make,这是Unix上的默认生成器)生成时,您可以通过设置第一个命令中的CMAKE_BUILD_TYPE变量(称为配置步骤)来指定生成类型。在使用单配置生成器时,必须始终设置此变量。内置配置为DebugReleaseRelWithDebInfoMinSizeRel。有关详细信息,请参阅this answer

在配置步骤之后,您可以通过调用底层构建工具(在本例中为make)或通过调用CMake的通用构建启动器命令(cmake --build)来构建项目,就像我在这里所做的那样。

如果您使用的是Windows,则默认生成器是Visual Studio,它是一个多配置生成器。这意味着构建类型是在构建步骤中选择的,而不是在配置步骤中选择的,因此必须相应地调整命令:

$ cmake -S /path/to/source-dir -B /path/to/build-dir
$ cmake --build /path/to/build-dir --config Release

这些步骤假定您正在查看的CMake版本行为良好。如果项目无法通过上述步骤进行构建,并且您已将其所有依赖项安装到系统位置(并且它们行为良好),那么您应该打开上游项目的问题。在成熟的CMake构建中,最常见的不良行为来源是依赖关系处理。通常情况下,您必须阅读构建或其文档来确定需要为项目设置哪些变量(通过-D,就像我们上面对CMAKE_BUILD_TYPE所做的那样),才能找到它的依赖项。

高级主题

设置选项和缓存变量

某些项目提供启用/禁用测试、组件、功能等选项。这些通常通过在配置步骤期间将条目写入CMake缓存来完成。例如,禁用构建测试的常见方法是在命令行将BUILD_TESTING设置为NO

$ cmake -S /path/to/source-dir -B /path/to/binary-dir [...] -DBUILD_TESTING=NO

此特定变量是约定,但不保证遵守。请查看项目文档以了解哪些选项可用。

选择生成器和工具链

专门使用Visual Studio生成器时,您可以告诉CMake您希望面向哪个平台以及您希望使用哪个版本的编译器。为此,CMake配置命令的完整形式为:

$ cmake -G "Visual Studio 16 2019" -A <ARCH> -T<TOOLSET> [...]
<ARCH>的有效值包括Win32x64ARMARM64。如果未指定<TOOLSET>,则将使用32位MSVC编译器。通常,您会希望设置为host=x64,以确保使用64位MSVC,这样可以为大型链接步骤分配更多内存。您还可以将<TOOLSET>设置为ClangCL以使用Visual Studio提供的ClangCL工具。

在所有生成器上,CMake嗅探要使用的编译器环境。它分别检查C和C++编译器的CCCXX环境变量。如果这些文件为空,它将在PATH中查找ccc++可执行文件。您可以通过在CMake命令行设置CMAKE_C_COMPILERCMAKE_CXX_COMPILERCMake cache(而不是环境)变量(再次使用-D)来手动覆盖编译器。

使用依赖项安装&;

生成CMake项目后,您可以在系统范围内安装,或者(最好)通过运行以下命令将其安装到本地前缀:

$ cmake --install /path/to/build-dir --prefix /path/to/install-dir [--config Release]

其中--config仅在使用多配置生成器时才是必需的。安装到本地前缀后,可以通过将CMAKE_PREFIX_PATH设置为/path/to/install-dir来配置依赖于它的项目。

这篇关于如何构建CMake项目?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆