最小的GNU Make构建系统

时间:2015-01-10 01:42:38

标签: c++ c gnu-make dependency-management build-system

关于如何避免小型项目的autotools并使用裸GNU Make的强大功能的文章很少:

  1. http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
  2. http://david.rothlis.net/large-gnu-make/
  3. 我喜欢尽可能依赖wildcard和内置隐式规则的东西。

    我可以使用GNU Make的现成脚本吗?

    我需要的功能(请参阅第二个链接以获取说明):

    • 提供标准目标
    • 标准环境变量
    • 自动依赖于C和C ++头文件
    • 使用隐式规则
    • 对第三方软件包的依赖关系:pkg-config

    很高兴但对我来说不是必需的:

    • 细粒度依赖
    • 检测环境变化
    • 清洁输出
    • 单独的构建目录

1 个答案:

答案 0 :(得分:0)

查看名为 prorab 的模板库:

https://github.com/igagis/prorab/blob/master/wiki/HomePage.md

它具有您需要的大多数功能,并且具有包含使用相同模板库的独立makefile的功能。

特点:

  • 提供标准目标:提供编译.c和.cpp文件的目标,链接二进制文件,动态库或静态库。还提供了目标:全部,清理,安装,卸载
  • 标准环境变量:支持CC,CXX,CFLAGS,CPPFLAGS,CXXFLAGS,LDFLAGS,LDLIBS,PREFIX,DESTDIR
  • 对C和C ++头文件的自动依赖:是的。 *使用GCC生成的.d信息。
  • 第三方软件包的依赖关系:pkg-config:例如,将`pkg-config --libs yourPackage`传递给LDLIBS。

  • 细粒度的依赖关系:是的,一切都取决于必要的东西。

  • 检测环境中的更改:支持对编译/链接标志的依赖
  • 清洁输出:是的,如果需要,可以打开“完整”输出。
  • 单独的构建目录:目标文件放在一个可以重新定义的单独目录中。

如果有任何问题,请随时与我联系或在github上提出问题。