C/C++构建工具
csbuild的Python项目详细描述
csb(发音为“cusp”)是一个python makefile程序,它的编写既高效又易于使用。与gnu make不同的是,csbuild的语法非常简单,而且很容易实现,同时仍然很强大。不需要深入了解g++的数百个标志
此外,CSB的目的是尽可能避免做过多的工作。与其指定要编译的每个文件,还不如指定不想编译的文件和目录,因此向项目中添加新文件与创建新文件一样简单。编译时,csb会检查每个源文件中的头文件,在包含的头文件更改时重新编译每个必需的源文件,但只保留头文件不会影响的文件。此外,它在项目中保留源文件和头文件的md5记录,以便在修改日期已更改但内容未更改时不重新编译文件
CSB也智能多线程,将使用线程编译,以使基于机器硬件的最大效率。
CSB带来的一个非常大的优势是在我称之为“分块构建”的实现中智能地使用“Unity-Build”概念。使用分块构建,项目被划分为更大的编译单元,通过将多个源文件连接到一个文件中来创建在进行完整构建时,这大大加快了编译速度;然而,unity构建经常失败的地方是在迭代编程中,涉及到对少数文件的多个连续的小更改,在这种情况下,unity构建往往最终构建的内容远远超过所需
为了避免这个问题,CSB采取了一种顺序的方法来构建在进行完整的构建时,csb使用unity方法,将小的编译单元组合成大的编译单元,以增加构建时间。然而,当进行增量构建时,csb利用小的构建将这些较大的单元拆分回它们的基础组件。当一个构建只包含少量的文件时,事务管理局将丢弃这些文件存在的块,并将它们编译为单独的文件——然后下次编译该块中的任何文件时,只编译它,而不是整个块。最终的结果是一个从统一方法开始的构建,并随着时间的推移逐渐转向更传统的方法。(但是,当您需要在一个块中构建足够多的文件时,csb将返回到构建整个块-因此,当处理头文件或一次更改多个文件时,您可能会发现构建在块和单个文件之间来回移动,以尝试将所有构建保持在尽可能短的时间内。)
最后,csb将“../configure”和“make”组合成一个调用,作为构建过程的一部分检查依赖项,如果找不到所需的库,则在构建的一开始就发出警报,而不是等到调用链接器发出警报。