一、系统版本

  • 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的更多相关文章

  1. CMake学习(1)---简单程序与库

    cmake是linux平台下重要的工具,可以方便的组织makefile.之前一直在windows平台下进行软件开发,在vs2010的IDE里,只要一点run程序就能跑出结果.但是程序的编译并没有那么简 ...

  2. CMake学习笔记四:usb_cam的CMakeLists解析

    最近在学习cmake,在完整看了<cmake实践>一书后,跟着书上例程敲了跑了一遍,也写了几篇相关读书笔记,算是勉强基本入门了.所以找了usb_cam软件包的CMakeLists.txt来 ...

  3. cmake学习笔记(五)

    在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西.但靠这些知识还是不能看懂PySide使 ...

  4. cmake 学习笔记(三)

    转自:http://blog.csdn.net/dbzhang800/article/details/6329314 接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cma ...

  5. cmake 学习笔记(二)

    在 Cmake学习笔记一 中通过一串小例子简单学习了cmake 的使用方式. 这次应该简单看看语法和常用的命令了. 简单的语法 注释 # 我是注释 命令语法 COMMAND(参数1 参数2 ...) ...

  6. CMake学习

    CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用. 作者:AlphaGL.版权所有,欢迎保留原文链接进行转载 :) 本文目录如下: 1.CMake介绍 2.CMake安装与使用 2 ...

  7. cmake 学习笔记(三) (转)

    接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cmake 的使用. 学习一下cmake的 finder. finder是神马东西? 当编译一个需要使用第三方库的软件时,我 ...

  8. 与你一起学习MS Project——理论篇:项目管理与Project

    Hi,你好!我是大黄蜂,非常高兴借此机会与你一起学习微软Project的相关知识和技能.这一次的分享主要是结合本人在实际使用Project 2013过程中的一些方法技巧,其中有一些材料则来源于互联网, ...

  9. CMake学习笔记四-CMake常用命令

    CMake常用命令 PROJECT PROJECT(projectname [CXX] [C] [Java]) 指定工程名称,并可指定工程支持的语言.支持语言列表可忽略,默认支持所有语言 SET ...

随机推荐

  1. Java.io.File中的delete()方法和deleteOnExit()方法的区别

    1.delete()方法:             当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行: 2.deleteOnExit()方法:            当 ...

  2. 轮播图原生js实现和jquery实现和js面向对象方式实现

    原生JS实现 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. 部署私有Docker Registry

    安装部署一个私有的Docker Registry是引入.学习和使用Docker这门技术的必经之路之一.尤其是当Docker被所在组织接受,更多人.项目和产品开始接触和使用Docker时,存储和分发自制 ...

  4. mybatis 从数据库查询的信息不完整解决办法

    List<Product> products = productService.getProductListWithPage(productQuery); 今天碰到一个很奇怪的现象,上面的 ...

  5. cf 126D - Fibonacci Decomposition

    题目大意 \(t\le 10^5\)组询问 每次询问\(1\le n\le 10^{18}\) 求有多少种\(n\)的\(fibonacci\)分解 分解定义为:每个\(fib\)数最多选一个,且和为 ...

  6. 地精部落(bzoj 1925)

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  7. sql2008百万级数据排除重复信息

    --高性能排除重复select userid from table where userid in ( select userid from ( select userid, row_number() ...

  8. 洛谷 [P1552] 派遣

    树型DP + 可并堆 非常清楚的想到是树型DP, 但是如何维护最小值, 于是就去新学了可并堆 #include <iostream> #include <cstring> #i ...

  9. LOJ#2084. 「NOI2016」网格

    $n,m \leq 1e9$,$n*m$的网格中有$c \leq 1e5$个是黑的,其他是白的.问:使至少两个白的不连通,最少需要再把几个白的涂黑. 可以发现答案是-1,0,1,2啦.-1要么没白的, ...

  10. sql2008安装时 重新启动计算机 失败

    原文发布时间为:2010-11-02 -- 来源于本人的百度文章 [由搬家工具导入] sql2008安装时 重新启动计算机 失败解决方法:regedit 运行 打开注册表,找到HKEY_LOCAL_M ...