首页 > 其他分享 >CMake编写规则

CMake编写规则

时间:2023-03-15 14:35:06浏览次数:32  
标签:文件 cmake CMake 编译 构建 规则 编写 main Tutorial

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。

1.安装

cmake下载地址:[https://cmake.org/download/]

本文使用的是Ubuntu Linux环境,通过apt安装cmake:

$ sudo apt update
$ sudo apt install cmake

2.构建和运行

构建如下文件:

.
├── build
└── src
    ├── CMakeLists.txt
    └── main.c

main.c

1 #include <stdio.h>
2 
3 
4 int main(void)
5 {
6     printf("hello world.\n");
7 
8     return 0;
9 }

CMakeLists.txt

# 运行此文件的cmake最低版本
cmake_minimum_required(VERSION 3.10)

# 设置项目名Tutorial
project(Tutorial)

# 增加可执行文件Tutorial,由如下文件关联:main.c
add_executable(Tutorial main.c)

有两种构建方式(二选一,推荐第二种):

1).内部构建

$ cd ./src
$ cmake .

2).外部构建

$ cd ./build
$ cmake ../src/

无论是内部构建还是外部构建,都会生成一系列文件,由于平台是Linux,所以会生成Makefile文件。

3).编译

一般使用如下方式:

$ cmake --build .

因为是在Linux环境下,所以也可以使用make编译,如下:

$ make

4).运行

本例编译后生成叫"Tutorial"的可执行文件,直接运行:

$ ./Tutorial

3.说明

1).cmake命令不区分大小写,但是参数、变量区分大小写;
2).参数用空格或分号隔开;
3).使用${VAR}引用变量;
4).引号可加可不加,但如果字符串中有空格则要加引号;

4.概念

1).目标文件(target): 可执行文件(add_executable)、库文件(add_library);
2).命令(cmake-command):用来设置数据的命令;
3).变量(cmake-variable):以"CMAKE_"开头的变量名;
4).属性(cmake-properties):文件/文件夹都有各自的属性;

5.命令

[待补充]

标签:文件,cmake,CMake,编译,构建,规则,编写,main,Tutorial
From: https://www.cnblogs.com/phoebus-ma/p/17218398.html

相关文章

  • mysql 隐式类型转换规则
    规则:1、两个参数至少有一个是NULL时,比较的结果也是NULL,例外是使用<=>对两个NULL做比较时会返回1,这两种情况都不需要做类型转换2、两个参数都是字符串,会按照字符串......
  • 注册插件:违反了继承安全性规则,派生类型必须与基类型的安全性匹配或低于比基类型的安
    当项目升级到VS2010或者2012后(同时NET版本也升级到4.0),会出现如下错误提示信息:类型“XXX”违反了继承安全性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型......
  • 正则表达式规则
    单个字符的匹配规则如下:正则表达式规则可以匹配A指定字符A\u548c指定Unicode字符和.任意字符a,b,&,0\d数字0~90~9\w大小写字母,数字和下划线a~z,A......
  • 10 url-pattern的匹配规则
    ​ URL的匹配规则精确匹配精确匹配是指<url-pattern>中配置的值必须与url完全精确匹配。<servlet-mapping><servlet-name>demoServlet</servlet-name><......
  • 10 url-pattern的匹配规则
    ​ URL的匹配规则精确匹配精确匹配是指<url-pattern>中配置的值必须与url完全精确匹配。<servlet-mapping><servlet-name>demoServlet</servlet-name><......
  • 巧妙使用SQL Server的计算列实现项目唯一规则快速定制
    转载自作者zhang502219048的微信公众号【SQL数据库编程】:巧妙使用SQLServer的计算列实现项目唯一规则快速定制软件产品,相当于是一个通用模板。而软件项目,则是基......
  • GPU代码编写笔记
    1.内存拷贝//重新排序pointsthrust::device_ptr<unsignedint>rank_ptr_points;//新建一个指针allocThrustDevicePtr(&rank_ptr_points,state.numPoints);/......
  • Gin学习笔记--中间件的编写与使用
    中间件在web应用服务中,完整的一个业务处理在技术上包括客户端操作,服务端处理,返回处理结果给客户端三个步骤。在实际的业务开发和处理中,会有更复杂的业务和需求场景。一个......
  • Codeforces比赛规则梳理
    1、排名div选手们按Rating以1700为界划分为Div.1和Div.2两类,Div.1的比赛较难,Div.1的ABC三题会和Div.2的CDE三题相同。每次比赛结束后Rating都会依据此前各个选手的Rating和......
  • 通过matlab对比规则LDPC和非规则LDPC的误码率
    1.算法描述       LDPC码是麻省理工学院RobertGallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年......