blog/source/_posts/makru-tutor-1.md
2020-12-26 21:58:50 +08:00

26 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 使用Makru和makru_langc管理现代C项目编译引入&目录
date: 2020-12-26 21:21:13
tags:
- Makru
- C
---
[Makru](https://gitlab.com/jinwa/makru)是一个用Python编写的全新编译工具。它的目的不是提供更多的编译逻辑而是提供一个统一的平台方便开发和引入新的编译逻辑。Makru和目前主流的make-like编译系统最大的不同点再于它没有使用类似宏语法之类的东西为配置文件提供超高的灵活性而是直接选择了很多现代包管理工具正在使用的结构化数据配置文件Makru使用的是yaml。[makru_langc](https://gitlab.com/jinwa/makru_langc)就是在它之上构建的C语言项目编译插件。
得益于这样的选择makru_langc提供了非常流畅的编译管理体验。你可以快速理解并编辑配置文件而不是在配置文件的海洋里晕头转向。另外makru_langc还支持高自由度的自定义你甚至可以利用它提供的工具编写自己的编译逻辑。
这个文章系列将会介绍一个用makru_langc来管理编译的小演示项目scat它接收标准输入然后输出到标准输出。为了演示makru_langc的功能scat会有一个子项目叫libcopy。这个子项目里只有一个函数从第一个File输入输出到第二个File。
makru_langc还自带直接从本地pkgconfig查询第三方库的功能最后一篇文章会覆盖到这个特性并以此说明如何为makru_langc编写自己的库查询逻辑。
## 环境说明
文章中的开发环境是运行于Linux 5.9.15 x86_64之上的Fedora 33。
## 目录
- 配置Makru和makru_langc
- 为库项目编写配置文件
- 为可执行文件项目编写配置文件
- 使用Pkgconfig Dependency Resolver引入第三方库
- makru_langc的基本工作流程
- 编写一个基于命令行输入的Dependency Resolver
- makru_langc代码阅读指引