cmake——project

命令project用于设置项目的名称

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.

同时也设置以下变量:

  1. PROJECT_SOURCE_DIR, <PROJECT-NAME>_SOURCE_DIR:项目源文件的绝对路径

  1. PROJECT_BINARY_DIR, <PROJECT-NAME>_BINARY_DIR:项目二进制文件的绝对路径

  1. PROJECT_IS_TOP_LEVEL, <PROJECT-NAME>_IS_TOP_LEVEL(版本3.21及以上支持):布尔值,指示项目是否是顶层

注:类似PROJECT_SOURCE_DIR, <PROJECT-NAME>_SOURCE_DIR表示可以有两种表示方法:${PROJECT_SOURCE_DIR}和${${PROJECT_NAME}_SOURCE_DIR。

下面是一个例子,用于展示在顶层的CMakeLists.txt调用project(Cmake_Command_Test)后,输出各变量值:

#CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(Cmake_Command_Test)

# 项目名称保存在PROJECT_NAME
message("project name: ${PROJECT_NAME}")
# 顶层调用CmakeLists.txt ,项目名称保存在CMAKE_PROJECT_NAME
message("cmake project name: ${CMAKE_PROJECT_NAME}")
# 项目源文件的绝对路径 PROJECT_SOURCE_DIR
message("Absolute path to the source directory for the project: ${PROJECT_SOURCE_DIR}")
#message("Absolute path to the source directory for the project: ${${PROJECT_NAME}_SOURCE_DIR}")
# 项目二进制文件的绝对路径 PROJECT_SOURCE_DIR
message("Absolute path to the binary directory for the project: ${PROJECT_BINARY_DIR}")
#message("Absolute path to the binary directory for the project: ${${PROJECT_NAME}_BINARY_DIR}")
# 布尔值,指示项目是否是顶层 PROJECT_IS_TOP_LEVEL 版本3.21及以上支持
message("The project is top-level: ${PROJECT_IS_TOP_LEVEL}")
#message("The project is top-level: ${${PROJECT_NAME}_IS_TOP_LEVEL}")

创建目录build,打开VS命令行工具执行如下命令:

cd build
cmake ..

各变量输出如下,由于这边cmake版本低于3.21,所以PROJECT_IS_TOP_LEVEL为空:

project name: Cmake_Command_Test
cmake project name: Cmake_Command_Test
Absolute path to the source directory for the project: D:/Code/Github/Cmake/command_test
Absolute path to the binary directory for the project: D:/Code/Github/Cmake/command_test/build
The project is top-level:

处理上述变量,其他变量则由下面的可选参数设置,如果没有指定可选参数则变量设置为空。

  1. 当指定[VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]时,设置以下变量:

  1. PROJECT_VERSION, <PROJECT-NAME>_VERSION

  1. PROJECT_VERSION_MAJOR, <PROJECT-NAME>_VERSION_MAJOR

  1. PROJECT_VERSION_MINOR, <PROJECT-NAME>_VERSION_MINOR

  1. PROJECT_VERSION_PATCH, <PROJECT-NAME>_VERSION_PATCH

  1. PROJECT_VERSION_TWEAK, <PROJECT-NAME>_VERSION_TWEAK

  1. CMAKE_PROJECT_VERSION版本3.12及以上支持):当从顶层CMakeLists.txt中调用时,同时也设置CMAKE_PROJECT_VERSION。

#CMakeLists.txt
cmake_minimum_required(VERSION 3.10)

project(Cmake_Command_Test VERSION 23.1.12.55)

# 版本号
message("project version: ${PROJECT_VERSION}, ${${PROJECT_NAME}_VERSION}")
# 当从顶层CMakeLists.txt中调用时,同时也设置CMAKE_PROJECT_VERSION 版本3.12及以上支持
message("cmake project version: ${CMAKE_PROJECT_VERSION}")
message("project version major: ${PROJECT_VERSION_MAJOR}, ${${PROJECT_NAME}_VERSION_MAJOR}") 
message("project version minor: ${PROJECT_VERSION_MINOR}, ${${PROJECT_NAME}_VERSION_MINOR}") 
message("project version patch: ${PROJECT_VERSION_PATCH}, ${${PROJECT_NAME}_VERSION_PATCH}") 
message("project version tweak: ${PROJECT_VERSION_TWEAK}, ${${PROJECT_NAME}_VERSION_TWEAK}")

然后输出结果如下:

project version: 23.1.12.55, 23.1.12.55
cmake project version: 23.1.12.55
project version major: 23, 23
project version minor: 1, 1
project version patch: 12, 12
project version tweak: 55, 55
  1. 当指定[DESCRIPTION <project-description-string>]时,设置以下变量:

  1. PROJECT_DESCRIPTION, <PROJECT-NAME>_DESCRIPTION版本3.9及以上支持):官方建议这个描述是相对较短的字符串,通常几个字。

  1. CMAKE_PROJECT_DESCRIPTION:当从顶层CMakeLists.txt中调用时,同时也设置该变量。并且在版本3.12及以上添加了<PROJECT-NAME>_DESCRIPTION

#CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(Cmake_Command_Test DESCRIPTION "This is just test")
        
message("project description: ${PROJECT_DESCRIPTION}, ${${PROJECT_NAME}_DESCRIPTION}")

然后输出结果:

project description: This is just test, This is just test
  1. 当指定[HOMEPAGE_URL <url-string>]时,设置以下变量:

  1. PROJECT_HOMEPAGE_URL, <PROJECT-NAME>_HOMEPAGE_URL版本3.12及以上支持)。

  1. CMAKE_PROJECT_HOMEPAGE_URL:当从顶层CMakeLists.txt中调用时,同时也设置该变量。

#CMakeLists.txt

cmake_minimum_required(VERSION 3.10)

project(Cmake_Command_Test HOMEPAGE_URL "https://www.baidu.com/")
        
message("project homepage url: ${PROJECT_HOMEPAGE_URL}, ${${PROJECT_NAME}_HOMEPAGE_URL}")
message("cmake project homepage url: ${CMAKE_PROJECT_HOMEPAGE_URL}")

输出结果如下:

project homepage url: https://www.baidu.com/, https://www.baidu.com/
cmake project homepage url: https://www.baidu.com/
  1. 当指定[LANGUAGES <language-name>...]时,可选择项目所需的编程语言。支持的语言包括:C, CXX (i.e. C++), CUDA, OBJC (i.e. Objective-C), OBJCXX, Fortran, HIP, ISPC, and ASM。默认情况下,如果没有指定编程语言,则默认C和CXX。

参考资料:

官方文档:https://cmake.org/cmake/help/latest/command/project.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《CMake——入门到精通》是一本介绍CMake的书籍。CMake是一个跨平台的开源构建工具,它可以用于自动化构建、测试和部署应用程序、库和模块。 这本书从CMake的基本概念和用法入手,逐步深入介绍了CMake的各种功能和高级用法。首先,书中介绍了CMake的安装和配置,以及CMake项目的基本结构。然后,书中详细讲解了如何编写CMakeLists.txt文件来描述项目的构建过程,包括如何定义源文件、头文件和链接库,如何设置编译选项和链接选项,以及如何生成不同平台和编译器下的构建配置。 在介绍完CMake的基本使用后,书中着重讲解了CMake的高级功能和技巧。比如,如何使用CMake进行跨平台开发,如何进行自定义构建规则,如何配置项目的安装和打包,以及如何对大型项目进行模块化管理等等。同时,书中还提供了大量的示例代码和实用技巧,帮助读者更好地理解和应用CMake。 总的来说,《CMake——入门到精通》是一本系统而全面的CMake教程,适合想要学习和掌握CMake的开发人员阅读。无论是初学者还是有一定经验的开发者,都可以从这本书中获取到实用的知识和经验,提高项目构建的效率和质量。无论是在学习中还是在实际工作中,这本书都可以成为CMake的权威参考指南。 ### 回答2: 《cmake——入门到精通.pdf》是一本关于CMake的书籍。CMake是一个跨平台的开源构建工具,用于管理软件项目的构建过程。本书旨在帮助读者从入门到精通掌握CMake的使用。 这本书首先介绍了CMake的基本概念和原理,包括如何编写CMakeLists.txt文件以及如何配置和生成项目的构建系统。然后,书中详细介绍了CMake的常用功能和命令,包括设置编译选项、指定源文件、添加库和链接库等。此外,本书还深入讲解了CMake的高级用法,如多目录项目管理、条件编译、自定义函数和宏等。 除了基本功能和用法,本书还涵盖了CMake与其他工具和框架的集成,如与Qt、OpenGL和Boost等。读者可以学习如何使用CMake来管理复杂项目和库的构建过程。 《cmake——入门到精通.pdf》也提供了大量的示例和实战项目,帮助读者更好地理解和应用CMake。通过阅读本书,读者将能够全面了解CMake的工作原理和常用技巧,掌握使用CMake构建和管理项目的能力。 总之,借助《cmake——入门到精通.pdf》,读者可以系统地学习和掌握CMake的基本概念和高级用法,并能够灵活应用CMake来管理复杂项目的构建过程。这本书对于软件开发者和项目管理者来说,是一本非常实用和有价值的参考书。 ### 回答3: 《CMake入门到精通.pdf》是一本介绍CMake工具的书籍。CMake是一个跨平台的开源构建工具,可以用于管理和自动化C++项目的构建过程。该书以系统的方式介绍了CMake的基本概念、语法和用法。 首先,书中详细解释了CMake的背景和作用。CMake的主要功能是生成与平台无关的构建脚本,在不同的操作系统和编译器上都可以使用。它可以通过简单的配置文件来管理项目的依赖关系和编译选项。 其次,书中介绍了CMake的基本语法和常用命令。CMake使用一种类似于脚本的语言来描述项目的构建过程,通过编写CMakeLists.txt文件来配置项目。书中示例详细展示了如何编写CMakeLists.txt文件,包括设置项目名称、指定源文件、添加库和链接库等等。 然后,书中深入讲解了CMake的高级用法和技巧。CMake提供了丰富的功能来处理复杂的项目结构和构建需求,例如条件判断、循环、宏定义等。书中通过实际案例演示了这些高级特性的使用方法,帮助读者更好地理解和运用CMake。 最后,书中还介绍了CMake与其他开发工具的集成,如CTest、CPack和CDash等。CTest用于自动化测试,CPack用于生成安装包,CDash用于持续集成。书中展示了如何使用这些工具来进一步提高项目的开发效率和质量。 总之,《CMake入门到精通.pdf》通过全面而系统的方式介绍了CMake工具的使用方法,适合初学者和有一定经验的开发者阅读。读者可以通过学习这本书,掌握CMake的基本概念和语法,了解CMake在实际项目中的应用,提高项目的构建效率和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值