automake和项目依赖

Hom*_*lli 10 c c++ automake makefile

我有一个项目,我想用automake构建.该项目由不同的组件或模块组成,并且存在模块间依赖关系,这需要以特定顺序构建项目.

例如:

project dir/
  module1 (core C shared lib)
  module2 (C++ shared lib wrapper around module 1)
  module3 (C++ application with dependency on module2)
  module4 (C library with dependency on module1)
  module5 (C application with dependency on module4)
Run Code Online (Sandbox Code Playgroud)

我对automake来说相对较新,但我(几乎)知道如何使用它来成功构建一个项目.

我想有一个'主'项目文件(如果可能的话),它指定项目模块的构建顺序,运行单元测试,如果有的话,整个构建过程都失败:

  • 其中一个模块无法构建
  • 其中一个模块未通过单元测试

我如何编写这样一个"主项目"文件(或调用任何其他机制)来构建具有大量模块间依赖关系的项目?

Bre*_*ale 6

如果你正在使用autotools,那么你也可以使用automake.顶级Makefile.am可以提供按顺序下降的子目录列表,例如:

SUBDIRS = module1 module2 module3 module4 module5
Run Code Online (Sandbox Code Playgroud)

该子目录Makefile.am可以添加测试目标,使用'make check'调用,如果需要,将强制构建:

check_PROGRAMS = t_module1

t_module1_SOURCES = t_module1.c
t_module1_LDADD = ./libmodule1.la
Run Code Online (Sandbox Code Playgroud)

很多东西需要学习,目前最好的练习很难确定,但如果你使用的是autotools,你就会习惯这种情况.

编辑:

info automake提供参考文档 - 但它是一个糟糕的教程.一个我遇到的最好的导游都可以找到这里.