一、系统版本

  • 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 暂时不支持,不知道使用!

最新文章

  1. 使用KRPano资源分析工具强力加密KRPano项目(XML防破解,切片图保护,JS反调试)
  2. PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展?
  3. Atitit Gaussian Blur&#160;高斯模糊&#160;的原理and实现and 用途
  4. SQL Server 优化器特性导致的内存授予相关BUG
  5. 相对路径获取项目文件 及报错 No mapping found for HTTP request with URI XXX in DispatcherServlet with name ‘springmvc’解决方法
  6. java synchronized类锁,对象锁详解(转载)
  7. iOS蓝牙4.0协议简单介绍
  8. Revit 2015 API 的全部变化和新功能
  9. ubuntu 学习笔记2--安装tomcat
  10. 视频播放—— H5同层播放器接入规范
  11. UIManager
  12. hive 非等值连接, 设置hive为nonstrict模式
  13. Python股票分析系列——基础股票数据操作(一).p3
  14. Discuz! X3 全新安装图文教程
  15. linux:基本概念和操作
  16. Core Animation之基础介绍
  17. The type org.apache.commons.cli.Options cannot be resolved. It is indirectly referenced from required .class files
  18. knn手写识别
  19. Linux:安装git
  20. Win10/Server2016镜像集成离线补丁

热门文章

  1. POJ1385 Lifting the Stone
  2. LOJ#2244. 「NOI2014」起床困难综合症
  3. 遍历简单XML节点
  4. EnableViewState 属性
  5. 改变querystring值,然后重定向
  6. pyspider 爬虫教程(一):HTML 和 CSS 选择器
  7. mac 重置mysql root密码
  8. 【C/C++】快速排序的两种实现思路
  9. hdu 1492(约数的个数)
  10. my.ini配置详解