cmake学习之-project

Posted gaox97329498

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 暂时不支持,不知道使用!

以上是关于cmake学习之-project的主要内容,如果未能解决你的问题,请参考以下文章

iOS学习之代码块(Block)

GoLang学习之变量定义和初始化

licode学习之编译篇--3

Python面向对象学习之八,装饰器

通俗易懂谈强化学习之Q-Learning算法实战

Redis学习之列表类型详解