BSD Make和GNU Make兼容的makefile

Rit*_*son 5 makefile

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

GNUmakefile:

ifneq ($(MAKECMDGOALS), "clean")
-include $(dependencies)
endif
Run Code Online (Sandbox Code Playgroud)

BSDmakefile:

.for i in $(dependencies)
.sinclude "${i}"
.endfor
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Jan*_*der 9

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

  • @Jack Kelly:但确实如此.:) (3认同)
  • 您的“缺点”就像是说将10,000 LOC文件拆分成逻辑上相关的单元会产生多个源文件的缺点。 (2认同)