BSD Make和GNU Make兼容的makefile

时间:2010-10-03 04:55:17

标签: makefile

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

GNUmakefile:

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

BSDmakefile:

.for i in $(dependencies)
.sinclude "${i}"
.endfor

有没有办法让它能够检测我是否在gmake或bsdmake下运行,然后根据它执行相应的include语句?我记得看到有人利用两个makefile处理器中的怪癖,这样他们就可以达到类似的效果。

或者,如果有比这更好的方法,我想知道! (切换到SCons或CMake是不合适的!)

谢谢!

1 个答案:

答案 0 :(得分:9)

您可以将您的GNU特定内容放在GNUmakefile中,将您的BSD特定内容放在BSDmakefile中,将常用内容放在名为Makefile.common或类似的文件中。然后在其他两个的每一个的开头包括Makefile.common。下行是,现在你有3个makefile而不是2.上升,你只会编辑1。