cmake学习之-project

一、系统版本

  • cmake version: 3.5.2
  • 系统版本: Ubuntun 16.04
  • cmake docment: 3.14.4
  • 最后更新: 2019-05-31

二、指令说明

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 主要用于提供项目的名称、版本、使用编译语言等信息

注意:
- 在当前系统版本下面,实际上 Project 并不支持 document 提供的 DESCRIPTIONHOMEPAGE_URL
- project 必须放在最上面, 且不能通过 include来包含

2.1 参数解析

  1. PROJECT-NAME:必选

    • 项目名称,配置好值后,会存在 CMAKE_PROJECT_NAME 变量中
  2. VERSION:可选

    • 版本号,主要分为 major(主版本号)、minor(次版本号)、patch(补丁版本号)、tweak, 格式为: 10.2.1.3
    • 设置对应的值后,会依次解析,存在各自对应的变量里面

    以 10.2.1.3 为例

    名称 变量名
    major(主版本号) PROJECT_VERSION_MAJOR 10
    minor(次版本号) PROJECT_VERSION_MINOR 2
    patch(补丁版本号) PROJECT_VERSION_PATCH 1
    tweak PROJECT_VERSION_TWEAK 3
    VERSION CMAKE_PROJECT_NAME 10.2.1.3
  3. LANGUAGES: 可选,如果未配置,默认使用 C 以及 CXX

    • 注意: 如果使用ASM(汇编),需要放在最后面

三、Coding

文件目录结构如下:

rs:cmake-project$ tree
.
├── CMakeLists.txt
├── main.cpp
└── make.sh

CMakeLists.txt 文件内容:


cmake_minimum_required(VERSION 3.5)

project(DEMO VERSION 10.2.1.3 LANGUAGES CXX C ASM )


message("CMAKE_PROJECT_NAME = ${CMAKE_PROJECT_NAME}")
message("PROJECT_VERSION = ${PROJECT_VERSION}")
message("PROJECT_VERSION_MAJOR    = ${PROJECT_VERSION_MAJOR}")
message("PROJECT_VERSION_MINOR = ${PROJECT_VERSION_MINOR}")
message("PROJECT_VERSION_PATCH = ${PROJECT_VERSION_PATCH}")
message("PROJECT_VERSION_TWEAK = ${PROJECT_VERSION_TWEAK}")


add_executable(DEMO main.cpp)


**main.cpp ** 文件内容


#include <iostream>

using namespace std;

int main(int argv, const char *argc[])
{  
    cout << "hello world" << endl;
    return 0;
}


make.sh 保存一些指令(这个非必须)

#!/bin/sh
rm -rf CMakeFiles
cmake ./
make
./DEMO

3.1 运行 sh make.sh

  • 终端显示:

.....

CMAKE_PROJECT_NAME = DEMO
PROJECT_VERSION = 10.2.1.3
PROJECT_VERSION_MAJOR    = 10
PROJECT_VERSION_MINOR = 2
PROJECT_VERSION_PATCH = 1
PROJECT_VERSION_TWEAK = 3
-- Configuring done
-- Generating done
-- Build files have been written to: /home/rs/Documents/study/cmake-project
Scanning dependencies of target DEMO
[ 50%] Building CXX object CMakeFiles/DEMO.dir/main.cpp.o
[100%] Linking CXX executable DEMO
[100%] Built target DEMO
hello world
rs:cmake-project$ 

四、参考链接

https://cmake.org/cmake/help/latest/command/project.html

五、 遗留问题

DESCRIPTION 以及 HOMEPAGE_URL 暂时不支持,不知道使用!

原文地址:https://www.cnblogs.com/gaox97329498/p/10957786.html