我希望你能为我提供一些关于基于automake的工具包构建(编译)程序的最佳实践方面的帮助。我正在编写一个工具包,其中包括几个外部和几个内部库以及演示工具。到目前为止,我一直在使用自己的makefile脚本进行编译,但现在我想切换到autotools,也就是说,我想从我那些糟糕的脚本转向更加标准化的方案。所以我需要一些帮助,比如一个最小的示例,可以让我学习。这个最小的示例应该符合“良好实践”的原则,并保留以下树形结构:
通常,我的演示工具位于单独子文件夹下的演示文件夹中,并使用来自include和lib文件夹的头文件和库进行编译。这意味着在构建工具包时,我通常首先将库编译到include和lib文件夹中,然后编译演示工具。
请问能否提供所需configure.ac和Makefile.am文件的最小示例以满足上述树形源结构(欢迎有关源树的任何建议)。
谢谢。
toolkit/src/libint/
libinternal.cpp libinternal.hpp
toolkit/src/libext/
externallib/
toolkit/bin/
my binaries
toolkit/demo/tool1/
tool1.cpp tool1.hpp
toolkit/demo/tool2/
tool2.cpp tool2.hpp
toolkit/lib/
libinternal.a libexternal.a
toolkit/include/libint/
libinternal.hpp
toolkit/include/libext/
libexternal.hpp
通常,我的演示工具位于单独子文件夹下的演示文件夹中,并使用来自include和lib文件夹的头文件和库进行编译。这意味着在构建工具包时,我通常首先将库编译到include和lib文件夹中,然后编译演示工具。
请问能否提供所需configure.ac和Makefile.am文件的最小示例以满足上述树形源结构(欢迎有关源树的任何建议)。
谢谢。
libext/externallib/
是什么?如果它是外部的,为什么需要在lib/
中复制一份?Autotools使用构建目录,旨在将库、头文件、程序安装在由./configure --help
指定的目录中。 - Brett Hale