“写 makefile 好难啊”
我工作一般都是用C,总是会遇到各种各样的构建工具,有的看似简单有的看似复杂,虽然最后真的看下去都很复杂是了,工作一年多以来踩了好多的坑,总结了一篇各类构建工具的入门文章。
makefile
automake
cmake
meson
meson 是一个类似 CMake 的构建工具
优点:
- 支持Linux/macOS/Windows
- 支持多种编译器,如 GCC, Clang, Visual Studio 等
- 支持多种编程语言, 包括 C, C++, D, Fortran, Java, Rust
- 语法可读性好, 而且是对用户友好的非图灵完备(non-Turing complete) DSL
- 支持多种操作系统及裸机(bare metal)的交叉编译
- 完整编译或增量编译速度很快
- 内置多平台依赖项解决支持
安装(Ubuntu)
1
2
3
sudo apt install python3
pip3 install ninja
pip3 install meson
一般套路
类似 CMake,meson 也将源码目录和编译目录分开,避免污染源码目录
1
2
3
4
5
# 在源码目录中准备meson.build文件
cd <sourcedir>
meson <builddir>
cd <builddir>
meson compile # 或执行ninja等
Hello World
源码:main.c
#include <stdio.h>
int main(void)
{
printf("Hello World\n");
return 0;
}
meson.build
project('hello_world', 'c')
executable('hello', 'main.c')
编译
1
2
3
meson ../build
cd ../build
meson compile
编译后会在 main.c 的上级目录 build 里生成可执行文件