cmake:project指定C/C++混合编程

1059 篇文章 287 订阅

设置项目的名称。

概要

project(<PROJECT-NAME> [<language-name>...])
project(<PROJECT-NAME>
        [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
        [DESCRIPTION <project-description-string>]
        [HOMEPAGE_URL <url-string>]
        [LANGUAGES <language-name>...])

设置项目的名称,并将其存储在变量PROJECT_NAME中。当从顶级CMakeLists.txt调用时,还将项目名称存储在变量CMAKE_PROJECT_NAME中。

也设置变量:

  • PROJECT_SOURCE_DIR, <PROJECT-NAME> _SOURCE_DIR

        项目源目录的绝对路径。

  • PROJECT_BINARY_DIR, <PROJECT-NAME> _BINARY_DIR

        项目二进制目录的绝对路径。

  • PROJECT_IS_TOP_LEVEL, <PROJECT-NAME> _IS_TOP_LEVEL

        3.21新版功能。

        指示项目是否是顶级的布尔值。

其他变量由下面描述的可选参数设置。如果这些参数中的任何一个没有被使用,那么相应的变量将被设置为空字符串。

选项

  • VERSION <version>:

可选的;也许不能被使用,除非策略CMP0048被设置为NEW。

接受一个由非负整数组成的< version >参数,例如< major >[。<小>(。> <补丁(。< tweak >]]],设置变量

(1)PROJECT_VERSION, <PROJECT-NAME> _VERSION

(2)PROJECT_VERSION_MAJOR, <PROJECT-NAME> _VERSION_MAJOR

(3)PROJECT_VERSION_MINOR, <PROJECT-NAME> _VERSION_MINOR

(4)PROJECT_VERSION_PATCH, <PROJECT-NAME> _VERSION_PATCH

(5)PROJECT_VERSION_TWEAK, <PROJECT-NAME> _VERSION_TWEAK。

3.12新版功能:当从顶级CMakeLists.txt调用project()命令时,版本也会存储在变量CMAKE_PROJECT_VERSION中

  • DESCRIPTION < project-description-string >

3.9新版功能。

可选的。设置变量

PROJECT_DESCRIPTION, <PROJECT-NAME> _DESCRIPTION到< project-description-string >。建议这个描述是一个相对较短的字符串,通常不超过几个单词。

当从顶级CMakeLists.txt调用project()命令时,描述也存储在变量CMAKE_PROJECT_DESCRIPTION中。

3.12新版功能:添加了< PROJECT-NAME>_DESCRIPTION变量。

  • HOMEPAGE_URL <url-string>

3.12新版功能。

可选的。设置变量PROJECT_HOMEPAGE_URL, <PROJECT-NAME> _HOMEPAGE_URL

到< URL -string >,它应该是项目的规范home URL。

当从顶级CMakeLists.txt调用project()命令时,URL也存储在变量CMAKE_PROJECT_HOMEPAGE_URL中。

  • LANGUAGES < language-name>...

可选的。也可以在没有LANGUAGES关键字的情况下指定第一个短签名。

选择构建项目所需的编程语言。支持的语言包括C、CXX(即c++)、CUDA、OBJC(即Objective-C)、OBJCXX、Fortran、HIP、ISPC、ASM。默认情况下,如果没有语言选项,C和CXX是启用的。指定语言NONE,或使用LANGUAGES关键字并列出无语言,以跳过启用任何语言。

3.8新版功能:增加了CUDA支持。

3.16新版功能:增加对OBJC和OBJCXX的支持。

3.18新版功能:增加了ISPC支持。

如果启用ASM,最后列出它,以便CMake可以检查其他语言(如C)的编译器是否也可以用于汇编。

通过VERSION、DESCRIPTION和HOMEPAGE_URL选项设置的变量用于包元数据和文档中的默认值。

注意

项目的顶级CMakeLists.txt文件必须包含一个直接调用project()命令的文字;通过include()命令加载是不够的。

如果不存在这样的调用,CMake将发出一个警告,并假装在顶部有一个项目(project)来启用默认语言(C和CXX)。

在CMakeLists.txt的顶部附近调用project()命令,但是在调用cmake_minimum_required()之后。在调用其他可能影响其行为的命令之前,建立版本和策略设置是很重要的。请参见策略CMP0000。

例子

有时候一个项目中可能即使用C语言,又要使用C++语言编程,这种情况下我们只需要使用【project】指定编程语言即可。

示例:

if (CMAKE_VERSION VERSION_LESS 3.0)
    project(srs CXX C)
else()
    cmake_policy(SET CMP0048 NEW)
    project(srs VERSION 4.0.0 LANGUAGES CXX C)
endif()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值