#include依赖关系管理与autotools

时间:2017-09-16 19:08:09

标签: autotools automake include-path

我编写了一些C ++软件并使用GNU autotools管理整个项目。

我有一些C ++代码的部分非常详细,所以我制作了一个脚本" generator.rb"它会自动生成一个文件" generated.cpp"。

我有一个构建目标" generated.cpp"构造" generated.cpp"来自" object_list.txt"

到目前为止,一切正常。

现在我想#include this" generated.cpp"另一个文件" handwritten.cpp"。

因为据说automake会自动计算对包含文件的依赖性,所以我希望它能够:

  • rebuild" generated.cpp"在构建" handwritten.o"时,如果它不存在或不是最新的

  • 触发一个新的" handwritten.o"每当object_list.txt发生变化时构建

那我怎么能这样做呢?

备注:我的源代码树就是这样:

./
\_src/
|  \_handwritten.cpp
|_design/
|  \_object_list.txt
\_tools/
   \_generator.rb  

备注:我的构建树就是这样:

build/
 \_gcc_debug/
    |_src/
    |  \_handwritten.o
    \_design/
       \_generated.cpp

1 个答案:

答案 0 :(得分:1)

  

因为据说automake会自动计算对包含文件的依赖性

由于Automake生成的Makefile生成依赖项作为编译的副作用,因此作为构建的一部分创建的文件需要特殊处理。您必须告诉Automake在尝试任何正常编译之前构建这样的文件。这是使用BUILT_SOURCES完成的,例如:

BUILT_SOURCES = generated.cpp

...然后编写创建generated.cpp所需的规则。