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”组合成一个调用,作为构建过程的一部分检查依赖项,如果找不到所需的库,则在构建的一开始就发出警报,而不是等到调用链接器发出警报。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从ImageIO中排除特定的TIFF读取器?   JavaJMockit和passbyreference。我们中一定有一个人错了(可能是我!)   java Android camera2放弃了牛轧糖的表面,但在棉花糖上工作   java按字符串中出现的顺序对字符数组进行排序   如何获取Groovy生成的java源代码   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java为什么我的冒泡排序代码会打印出这些奇怪的东西?   java JAXB:typesafeEnumMemberName=“generateName”是否可自定义?   Java编程输入:今天是星期天输出:星期天是今天   java不理解首个OOAD书的吉他示例   java如何从JformattedTextfield检索货币格式值   java可以从相同的源代码生成功能不同的可执行文件吗?