c++ - automake 和项目依赖

标签 c++ c makefile automake

我有一个要使用 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)

我对 automake 比较陌生,但我(差不多)知道如何使用它来成功构建单个项目。

我想要一个“主”项目文件(如果可能的话),它指定项目模块的构建顺序,运行单元测试并在以下情况下使整个构建过程失败:

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

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

最佳答案

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

SUBDIRS = module1 module2 module3 module4 module5

子目录 Makefile.am 可以添加测试目标,使用“make check”调用,必要时将强制构建:

check_PROGRAMS = t_module1

t_module1_SOURCES = t_module1.c
t_module1_LDADD = ./libmodule1.la

很多需要学习,而且当前最佳实践可能很难确定,但如果您使用自动工具,您就会习惯这种情况。

编辑:

info automake 提供了引用文档 - 但它是一个糟糕的教程。可以找到我遇到的最好的指南之一 here .

关于c++ - automake 和项目依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216181/

相关文章:

c++ - 函数调用完成返回对象后无法解释析构函数调用

c++ - 如何从 C++ 中的字符串数组中提取整数

c++ - QTcpSocket 写入数据结构

c - gstreamer 中的信号和回调

c - ARM GCC 打包结构地址警告

linux - Makefile 中的 MD5SUM

bash - 在 Go makefile 中使用 bash 命令

c++ - "vtable fixup"是什么意思?

c - 如果用户没有在 C 中引入 3 位数字,则打印错误

python - 为什么 Python 项目中没有用于自动化的 Makefile?