我有一个BSDmakefile和GNUmakefile,除了依赖管理之外几乎完全相同。
GNUmakefile:
ifneq ($(MAKECMDGOALS), "clean")
-include $(dependencies)
endif
BSDmakefile:
.for i in $(dependencies)
.sinclude "${i}"
.endfor
有没有办法让它能够检测我是否在gmake或bsdmake下运行,然后根据它执行相应的include语句?我记得看到有人利用两个makefile处理器中的怪癖,这样他们就可以达到类似的效果。
或者,如果有比这更好的方法,我想知道! (切换到SCons或CMake是不合适的!)
谢谢!
答案 0 :(得分:9)
您可以将您的GNU特定内容放在GNUmakefile
中,将您的BSD特定内容放在BSDmakefile
中,将常用内容放在名为Makefile.common
或类似的文件中。然后在其他两个的每一个的开头包括Makefile.common
。下行是,现在你有3个makefile而不是2.上升,你只会编辑1。