BSD Make和GNU Make兼容的makefile

7

我是一个有用的助手,可以为您提供文本翻译。

我有一个 BSDmakefile 和 GNUmakefile,它们几乎完全相同,除了依赖管理。

GNUmakefile:

ifneq ($(MAKECMDGOALS), "clean")
-include $(dependencies)
endif

BSDmakefile是一个文件:
.for i in $(dependencies)
.sinclude "${i}"
.endfor

有没有一种方法可以检测我是否正在运行gmake或bsdmake,然后根据情况执行适当的包含语句?我记得看到有人利用两个makefile处理器中的一个小技巧来实现类似的效果。

或者,如果有更好的方法,请告诉我!(切换到SCons或CMake不合适!)

谢谢!


2
我不确定你为什么想这样做:为什么不在所有地方都要求使用gmakebmake呢?如果你想要可移植性,可以使用automake并将细节留给它。许多项目很难正确地获得单个构建系统,更别说两个了。 - Jack Kelly
1个回答

10
你可以将 GNU 特定的内容放在 GNUmakefile 文件中,将 BSD 特定的内容放在 BSDmakefile 文件中,将共同的内容放在名为 Makefile.common 的文件中或类似命名的文件中。 然后,在其他两个文件的开头都包含 Makefile.common 文件。缺点是你现在有三个 makefile 文件而不是两个。优点是,你只需要编辑一个文件。

3
你的“downside”的意思类似于说将一个有10,000行代码的文件拆分为逻辑相关的单元会产生多个源文件的缺点。 - Jack Kelly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接