update makru-tutor-2

This commit is contained in:
thisLight 2021-01-18 16:52:09 +08:00
parent 8027608384
commit 6e3ea83374

View file

@ -1,6 +1,7 @@
--- ---
title: 使用Makru和makru_langc管理现代C项目编译 配置Makru和makru_langc title: 使用Makru和makru_langc管理现代C项目编译 配置Makru和makru_langc
date: 2021-01-04 18:49:20 date: 2021-01-04 18:49:20
updated: 2021-01-18 16:37:00
tags: tags:
- Makru - Makru
- C - C
@ -13,7 +14,7 @@ categories: 代码农场
这是一篇属于“使用Makru和makru_langc管理现代C项目编译”系列的文章你可以在{% post_link makru-tutor-1 %}找到目录。 这是一篇属于“使用Makru和makru_langc管理现代C项目编译”系列的文章你可以在{% post_link makru-tutor-1 %}找到目录。
注意makru_langc尚未考虑对于Windows的支持因为Windows并非主要的编译平台。在makru_langc之前多数项目都是通过Visual Studio编译我将在未来考虑如何支持以Windows作为宿主机系统进行编译。目前为止makru_langc仅仅考虑*unix系统的支持如果你想要试用建议你安装一个Linux发行版或使用Windows 10自带的Windows Subsystem for Linux 2。makru_langc不会尝试生成其它软件的项目文档因为这并不是makru_langc的目标 注意makru_langc尚未考虑对于Windows的支持。
## 安装Makru ## 安装Makru
Makru完全由Python编写而成只需要你有Python。目前对于Python低版本的兼容性未知但是你至少应该有3.6或更高版本的Python。我的环境使用的是Python 3.9.1。 Makru完全由Python编写而成只需要你有Python。目前对于Python低版本的兼容性未知但是你至少应该有3.6或更高版本的Python。我的环境使用的是Python 3.9.1。
@ -72,9 +73,10 @@ __init__.py
这样就安装好了! 这样就安装好了!
但这篇文章还不应该结束设想一下大部分情况下升级插件都不会破坏兼容性如果你想要享受最新功能和bug修复每一次更新你都重复下载-解压的操作,这种重复性的操作让人感觉不便。我们还需要一个新的方案。
如果你使用Git来管理你的项目这里有一个更方便的方法Git子模块。
### 通过Git子模块安装 ### 通过Git子模块安装
让我们看看Git子模块的简单解释
但这篇文章还不应该结束因为直接放源代码安装实在是非常不方便。如果你使用Git的话这里有一个更方便的方法Git子模块。让我们看看Git模块的简单解释
{% quote "Pro Git, the 2nd edition" https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97 "7.11 Git 工具 - 子模块" %} {% quote "Pro Git, the 2nd edition" https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97 "7.11 Git 工具 - 子模块" %}
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。
@ -85,7 +87,6 @@ Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓
{% endquote %} {% endquote %}
这正是我们需要的实话说我在使用Git两三年之后才接触到这个特性我相信很多人从来没使用过它。不过它确实在一些情况下很有用比如现在我们的情况。 这正是我们需要的实话说我在使用Git两三年之后才接触到这个特性我相信很多人从来没使用过它。不过它确实在一些情况下很有用比如现在我们的情况。
如果你仔细看过makru_langc的文件列表你在读到这里的时候可能就会意识到了为何makru_langc要这样直接把代码文件直接放在仓库的根目录。没错这就是为了子模块这个功能做的。
好吧废话少说。如果你需要Git的子模块功能的话你需要先把目录变成一个仓库。我们可以使用Git的魔法咒语来完成这件事 好吧废话少说。如果你需要Git的子模块功能的话你需要先把目录变成一个仓库。我们可以使用Git的魔法咒语来完成这件事
```` ````
@ -105,7 +106,17 @@ remote: Total 250 (delta 145), reused 183 (delta 104), pack-reused 6
处理 delta 中: 100% (146/146), 完成. 处理 delta 中: 100% (146/146), 完成.
```` ````
然后你就会看见项目根目录下多了个makru文件夹和一个`.gitsubmodules`文件,运行`git status`会多出来两个东西: 然后就可以在相应目录下看到我们的插件:
````
$ ls /path/to/makru-tutor/makru/plugins/makru_langc
__init__.py
...其它文件
````
如果你有过Python编程的经验到这里你应该就明白为何makru_langc要采取这种奇怪的项目布局了
但是到这里事情还没完我们还需要一个提交把我们的子模块放进树里。如果你需要了解Git你可以看看上面引用的那本《Pro Git》这本书有中文翻译。
现在运行`git status`会多出来两个东西:
```` ````
$ git status $ git status
位于分支 master 位于分支 master
@ -118,8 +129,6 @@ $ git status
新文件: makru/plugins/makru_langc 新文件: makru/plugins/makru_langc
```` ````
看起来是好了但是我们还需要提交变更到仓库。如果你需要了解Git你可以看看上面引用的那本《Pro Git》这本书有中文翻译的。
要提交变更可以这样做: 要提交变更可以这样做:
```` ````
git commit -m"随意产生的无意义信息(不" git commit -m"随意产生的无意义信息(不"
@ -132,7 +141,8 @@ $ git commit -m"add makru_langc to makru-tutor"
create mode 100644 .gitmodules create mode 100644 .gitmodules
create mode 160000 makru/plugins/makru_langc create mode 160000 makru/plugins/makru_langc
```` ````
好了,一切结束 然后安装就完成了
不过到这里我们仅仅是“做了件事”安装了Makru和makru_langc还没看到任何反馈。别担心下一篇文章里我们就会得到点反馈了。 不过到这里我们仅仅是“做了件事”安装了Makru和makru_langc还没看到任何反馈。别担心下一篇文章里我们就会得到点反馈了。
下一篇文章:为可执行文件项目编写配置文件 下一篇文章:为可执行文件项目编写配置文件