Linux下CMake简明教程(一)简单入门
代码链接
CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。
一 安装CMake
sudo apt install cmake
cmake -version
cmake version 3.17.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
二 简单样例
首先让我们从最简单的代码入手,先来体验下cmake是如何操作的。编写main.c,如下,
#include <stdio.h>int main(void)
{printf("Hello World\n");return 0;
}
然后在main.c相同目录下编写CMakeLists.txt,内容如下,
cmake_minimum_required (VERSION 2.8)project (demo)add_executable(main main.c)
- 第一行意思是表示cmake的最低版本要求是2.8,我们安装的是3.10.2;
- 第二行是表示本工程信息,也就是工程名叫demo;
- 第三行比较关键,表示最终要生成的elf文件的名字叫main,使用的源文件是main.c
- 在终端下切到main.c所在的目录下,然后输入以下命令运行
mkdir build
cd build
cmake ..
make
Linux下CMake简明教程(一)简单入门相关推荐
- Linux下CMake简明教程(二)同一目录下多个源文件
代码在git 接下来进入稍微复杂的例子:在同一个目录下有多个源文件.在之前的目录下添加2个文件,testFunc.c和testFunc.h.添加完后整体文件结构如下, (base) ledi@ledi ...
- Linux下CMake简明教程(八) 添加编译选项
代码在git 有时编译程序时想添加一些编译选项,如-Wall,-std=c++11等,就可以使用add_compile_options来进行操作. 这里以一个简单程序来做演示,main.cpp如下 # ...
- Linux下CMake简明教程(七)对库进行链接
代码在git 既然我们已经生成了库,那么就进行链接测试下.重新建一个工程目录,然后把上节生成的库拷贝过来,然后在在工程目录下新建src目录和bin目录,在src目录下添加一个main.c,整体结构如下 ...
- Linux下CMake简明教程
CMake是开源.跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿 ...
- Linux下CMake简明教程(10) 定义宏来控制打印的信息
代码在git 假设我们有个main.c,其内容如下 #include <stdio.h>int main(void) {#ifdef WWW1printf("hello worl ...
- Linux下CMake简明教程(九) 添加控制选项
代码在git 有时希望在编译代码时只编译一些指定的源码,可以使用cmake的option命令,主要遇到的情况分为2种: 本来要生成多个bin或库文件,现在只想生成部分指定的bin或库文件 对于同一个b ...
- Linux下CMake简明教程(六)动态库和静态库的编译控制
代码在git 有时只需要编译出动态库和静态库,然后等着让其它程序去使用.让我们看下这种情况该如何使用cmake.首先按照如下重新组织文件,只留下testFunc.h和TestFunc.c ├── CM ...
- Linux下CMake简明教程(五)正规一点的组织结构
代码在git 正规一点来说,一般会把源文件放到src目录下,把头文件放入到include文件下,生成的对象文件放入到build目录下,最终输出的elf文件会放到bin目录下,这样整个结构更加清晰.让我 ...
- Linux下CMake简明教程(四)不同目录下多个源文件
代码在git 一般来说,当程序文件比较多时,我们会进行分类管理,把代码根据功能放在不同的目录下,这样方便查找.那么这种情况下如何编写CMakeLists.txt呢? 我们把之前的源文件整理一下(新建2 ...
最新文章
- 【Go】Go基础(五):函数
- Python入门基础知识学什么?
- Linux系统文件编程(1)
- 初学echart的简单使用
- 测试python第二周_python第二周作业
- React:创建用于获取数据的自定义Hook
- PHP代码更新后画面不更新,为什么我的PHP代码不能更新SQL
- Javaweb家政服务管理系统的设计与实现
- flash基础动画制作
- 美军与敏捷领导力—八个改变工作方式世界的老兵
- 16岁的雅虎问答,因“不再受欢迎”将永久关闭
- 汉诺塔游戏c语言作业,C语言实现汉诺塔游戏.pdf
- [附源码]计算机毕业设计JAVA濒危物种科普系统
- 框架的优缺点(TP CI)
- 微信小程序开始时间,结束时间
- VC2008 NewControl 示例
- MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义
- C#使用EmguCV库介绍(一)
- MySQL基础知识,如果有疏漏、错误的地方请大家指出
- 《如何五分钟创建自己的新币token 》Dapp开发 Web3+以太坊+智能合约开发 (一)