-
Notifications
You must be signed in to change notification settings - Fork 14
create examples of zig build explained #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
ci测试未完全通过,为了保证规范性,请修改一下 |
|
两个问题:
我想了一下,是不是可以这么做,不用每个示例都给一个 demo,每篇文章,我们给一个大而全的 demo 就够了,这样也方便用户按需拷贝。 |
|
谢谢大家帮助更完善和规范文档以及配套代码。😄 我也是边做边学,比如bash的代码,以前没用过,这次直接抄run-all.sh,批量构建是方便。开心。 提到的两个问题,表达下我的观点: 问题1: 建议不这样做。删除此二进制文件很容易。但是会引入新的问题,就是程序正确性--无法构建运行。这个怎么办?为了可以构建,只能在build.zig内做手脚,或者brew install ,或者导入libbass源代码,导致更多文件需要导入,引入更多的读者阅读复杂度。 问题2: 建议不这样做。合并文件后文件数量少了,但是引入新的问题,就是增加读者的阅读负担。这个怎么办?此代码是文章配套代码,辅助读者理解文章,读者本可以看那个代码片段不懂就按图索骥的去仓库看可执行代码,如果懂了,那么代码文件再多也不需要他看,不会增加他的负担。现在需要自己去把一大坨代码分开找到自己想看的代码。以第二章为例,编译objc和c和c++ 的代码的三个build完全不相关,读者本来可能只是c的没看懂,现在要一起看代码,在分离代码。且合并在一起是偶然聚合,也是触发代码洁癖--高内聚低耦合。 我的看法是以下规范标准是有优先级的 > 程序正确性>程序自动化验证 >工程组织洁癖 >代码文件内组织洁癖。不能解决了低优先级的,影响了高优先级的。 你们再看看呢。我把我的考虑和遇到问题的分析摆出来,有什么我没有考虑到的更好的方法,可以提出来,满足全部需求当然最好。😄 |
|
先说第二点吧,这个比较重要,改动量会大些。 减少文件数不仅仅是代码洁癖,我其实更关注的是可维护性,文件这么多,将来适配新版本工作量也大。 我理解混淆在一起可读性也不会差很多,注释是少不了的,大部分人看完文章就可以了,不需要执行代码,把文章中的代码单独拿出来,我一开始的目的也是为了保证代码正确,且能够适配新版本的 API 改动。 有了这个目标的前提,是不是你的第二个问题就解决了? |
indeed, no need to chcckin artifact
如果是有 pattern 也还好 每一个例子只要突出一下就好了 |
我感觉这也有点是 zig 本身的问题 并没有 project/workspace 的概念 |
我今天刚好有空,花了半个上午和整个下午的时间,按你的思路做了下:把原来的几个位于不同目录的build.zig文件合并到1个build内(当然函数需要改名,从build改成b1,b2,b3...) 遇到了主要的问题:
核心原因是:build的入口函数的参数是一个指针类型,这意味着b1,b2,b3内创建的步骤不能重名,当然生成的文件的名字也不能重复。 我现在进度会一直卡在这里。 ps:我发布下我目前实验到的代码如下,供有需要的同学可以参考: |
好的,这个分支先保持不动了吧,后续我看看找更多人进来,看看怎么处理下。辛苦了!👍 |
|
Deprecated since 0.12 is out. |
PR说明
Zig构建系统解析系列文章的配套代码,这些配套代码都是可以通过$zig build以及zig build run来构建和运行的Zig构建系统解析共三个部分,配套代码分别在三个子目录内,分别为part1,part2,part3内part1/1.1build.zig文件,当你看到此文件,就意味着可以使用$zig build run命令来构建并运行build.zig依赖的zig文件,c文件,m文件等都在对应目录之内,可以查看build.zig了解工程依赖的文件清单