我是初学者C程序员,我在C中有一个不是很大的项目。 我编写了简单的perl脚本,用于构建不同的选项。我的项目没有拆分成目标文件,我只是将.c包含在一起,并通过一次编译调用构建了所有文件。
但是我的项目正在增长,编译时间达到了1s +(我喜欢脚本风格的调试,有很多变化和运行步骤),所以我决定将项目拆分为目标文件,将它们链接在一起并使用gnu make来检查源是否已经改变,就像每个人一样。
我预计这将使建筑更快。但不是! make太慢了,它使编译速度变得更慢了几次,我甚至没有完全拆分我的项目(一个.o每个.c文件),只有大约5个目标文件(项目有大约20个.c文件)! 甚至更慢或大致相同的时间make来检查文件是否更改,而不是重建整个项目时.c文件只包含在彼此中!
所以现在我只使用我的perl脚本的增强版本"构建系统"。我将项目拆分为几个重要部分并仅重建其中一个(其他主要是第三方库)并且它的工作速度非常快。它也比makefile更灵活,更易于管理,因为我有很多构建选项,包括交叉编译。但这是重塑自行车。
将所有c文件包含在一起并不是最佳做法,是吗? 我该怎么用?
我想说出这个问题"为什么制作这么慢?"但我知道为什么 - 为每个代码行启动一个shell是一项繁重的任务。也许对于非常大的项目来说它可以正常工作,但对我来说它有太多的开销。
那么管理C项目的最佳实践和工具是什么?什么构建工具快速灵活? 我不希望在每一个动作上都有类似垃圾的分叉,即使使用多个核心,也会使构建速度慢于天真的包含所有文件
答案 0 :(得分:1)
我建议您尝试将CMake与忍者生成器结合使用。
Ninja比make更快,而CMake可以轻松配置项目。