make、makefile、cmake、kconfig是怎么做工程管理的?

要解决的问题

大型工程项目

  • make、makefile、cmake、kconfig都是干什么的,他们之间什么关系
  • 如何查看编译了哪些文件?
  • 如何增加驱动?

大型工程一般使用make构建的,了解了相关原理就能解决上述问题。
本文用的工程样例是:https://github.com/sipeed/MaixPy.git

makefile和make

一个工程中的源码文件不计其数,需要有一系列的规则说明:

  • 需要编译哪些文件,如何编译指定编译顺序。哪些文件先编译、哪些文件后编译、哪些文件需要重新编译。
  • 需要创建哪些库文件以及如何创建这些库文件
  • 如何最后产生我们想要的可执行文件

把这些规则写到一个文件里,就是Makefile。
make是一个命令工具,用于解释Makefile中的指令。
尝试写一个hellloworld的程序

#include<stdio.h>
int main(){
   
     printf("hello 峡谷金城武\n");
     return 0;
} 

当我们想对这个hello.c生成可执行文件,通常采用

gcc hello.c -o hello

我们采用Makefile来编写这段代码,新建文件Makefile:

hello:hello.c
        gcc hello.c -o hello

使用make指令运行makefile,我们可以看到如下效果
make

cmake

大型工程的makefile文件非常复杂,一般人根本搞不懂,也不会写。有没有简单的方法来生成目标文件呢?
当然有。
如果说make-makefile是一个工程构建系统,cmake就是生成这个构建系统的系统。他可以生成各种IDE的工程文件或解决方案和makefile。
cmake通过读取脚本文件——CMakeLists.txt 中的规则来构建编译系统
举例说明:
生成可运行文件,打印HelloWorld

  • 1.使用cmake构建系统生成makefile
  • 2.使用make生成目标文件
  • 3.最后运行目标文件

1.准备源文件
在这里插入图片描述
main.cpp:

//main.cpp
#include <iostream>
int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.9)
project(HelloWorld)
set(CMAKE_CXX_STANDARD 11)
add_executable(HelloWorld main.cpp)

2.执行cmake:

(base) andrew@myg-pc:~/src/learncmake$ ls
CMakeLists.txt  main.cpp
(base) andrew@myg-pc:~/src/learncmake$ mkdir build
(base) andrew@myg-pc:~/src/learncmake$ cd build/
(base) andrew@myg-pc:~/src/learncmake/build$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值