gpt4 book ai didi

makefile - 如何为单独的调试和发布构建目录建立目标?

转载 作者:行者123 更新时间:2023-12-03 15:02:55 35 4
gpt4 key购买 nike

我正在寻找一些建议,以在递归的makefile系统中正确处理单独的调试和发布构建子目录,该系统使用$(SUBDIRS)目标,如gnumake手册中所述,将make目标应用于(源代码)子目录。

具体来说,我对实现“全部”,“干净”,“真正干净”等目标的可能策略感兴趣,这些目标要么假设其中一棵树,要么应该同时在两棵树上工作,这会引起问题。

我们当前的makefile使用一个COMPILETYPE变量,该变量被设置为Debug(默认)或Release(“发布”目标),它们可以正确地进行构建,但清理后只能在默认的Debug树上工作。传递COMPILETYPE变量变得笨拙,因为是否以及如何执行此操作取决于实际目标的值。

最佳答案

一种选择是在每种构建类型的子目录中都有特定的目标。因此,如果您在顶层执行“全部制作”,它将查看COMPILETYPE并在适当时调用“全部制作调试”或“全部发布”。

另外,您可以在顶层设置一个COMPILETYPE环境变量,并让每个子Makefile处理它。

真正的解决方案是不进行递归生成,而要在顶级文件的子目录中包含生成文件。这将使您可以轻松地构建与源代码所在目录不同的目录,因此可以具有build_debug和build_release目录。它还允许并行make起作用(make -j)。有关完整说明,请参见Recursive Make Considered Harmful

关于makefile - 如何为单独的调试和发布构建目录建立目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545780/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com