• CMake常用命令(二) 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>...])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    作用

    project命令用于指定cmake工程的名称,实际上,它还可以指定cmake工程的版本号(VERSION关键字)、简短的描述(DESCRIPTION关键字)、主页URL(HOMEPAGE_URL关键字)和编译工程使用的语言(LANGUAGES关键字)。

    参数

    1. PROJECT_NAME:将当前工程的名称赋值给PROJECT_NAME,同时${PROJECT_NAME}变量赋值为PROJECT_NAME。
    2. VERSION:指定工程的版本号。
    3. DESCRIPTION:对工程的文本描述。
    4. HOMEPAGE_URL:指定工程的主页URL。
    5. LANGUAGES选项:选择构建工程需要的编程语言。

    举例

    假设当前系统的cmake版本为3.10.2

    示例1 基础用法

    project(pro_test)
    
    • 1

    当定义了project()后,一下cmake自带变量会自动赋值

    1. PROJECT_NAME:将当前工程的名称赋值给PROJECT_NAME,对于本例子,就是${PROJECT_NAME}=mytest。
    2. PROJECT_SOURCE_DIR:当前工程的源码路径。
    3. _SOURCE_DIR:指定工程的源码路径,这个变量和PROJECT_SOURCE_DIR的区别就是,_SOURCE_DIR跟具体的工程名字关联起来,若就是当前工程,则该变量和PROJECT_SOURCE_DIR相等。
    4. PROJECT_BINARY_DIR:当前工程的二进制路径。
    5. _BINARY_DIR:指定工程的二进制路径,这个变量和PROJECT_BINARY_DIR的区别就是,_BINARY_DIR跟具体的工程名字关联起来,若就是当前工程,则该变量和PROJECT_BINARY_DIR相等。
    6. CMAKE_PROJECT_NAME:顶层工程的名称。例如当前调用的CMakeLists.txt位于顶层目录(可以理解为使用cmake命令首次调用的那个CMakeLists.txt),那么工程名还会赋值给CMAKE_PROJECT_NAME。

    示例2 VERSION用法

    project (mytest VERSION 1.2.3.4)
    
    • 1

    除示例1 中的变量更改外,还会更改PROJECT_VERSION

    示例3 DESCRIPTION用法

    project (pro_test DESCRIPTION “This is my test project.)
    
    • 1
    以下变量会被赋值
    **PROJECT_DESCRIPTION
    _DESCRIPTION
    CMAKE_PROJECT_DESCRIPTION**
    
    • 1
    • 2
    • 3
    • 4

    示例4 HOMEPAGE_URL用法

    project (mytest HOMEPAGE_URL “https://www.XXX(示例).com”)
    
    • 1
    以下变量会被赋值
    **PROJECT_HOMEPAGE_URL
    _HOMEPAGE_URL
    CMAKE_PROJECT_HOMEPAGE_URL**
    
    • 1
    • 2
    • 3
    • 4

    示例4 LANGUAGES用法

    该选项可以有两种调用方式:一种是直接跟在工程名后面,可以省略LANGUAGES关键字;另一种是跟在其他关键字(例如VERSION)后面,LANGUAGES关键字不能省略。

    project (pro_test “CXX”)
    
    • 1

    更多细节

    1. project命令并非必不可少,如果没有调用project命令,cmake仍然会生成一个默认的工程名“Project”,以及工程名对应的变量(例如PROJECT_NAME、CMAKE_PROJECT_NAME、PROJECT_SOURCE_DIR、_SOURCE_DIR、PROJECT_BINARY_DIR、_BINARY_DIR等)。但是VERSION、DESCRIPTION、HOMEPAGE_URL等选项对应的变量不会被赋值(LANGUAGES例外,即使不指定,默认语言为C和CXX)。
    2. project命令需要放置在其他命令调用之前,在cmake_minimum_required(参考https://www.jianshu.com/p/7535bff0e894
      )命令之后。
    3. 如果多次调用project命令,那么CMAKE_PROJECT_NAME、CMAKE_PROJECT_VERSION、CMAKE_PROJECT_DESCRIPTION、CMAKE_PROJECT_HOMEPAGE_URL等变量是以最近一次调用的project命令为准

    参考

    Cmake命令之project介绍

  • 相关阅读:
    Multihead Attention - 多头注意力
    维纳滤波原理极其Python实现
    【附源码】Python计算机毕业设计实验室耗材管理系统
    过滤器Filter/监听器Listener
    HDFS系统权限详解
    多频电磁法概述 - 2. 理论
    jdk定时任务的使用
    个人要做量化怎样才能获得交易接口?
    常见的C语言类型转换
    RabbitMQ
  • 原文地址:https://blog.csdn.net/qq_26849933/article/details/126693517