我们如何创建软件包。以便 提取我们的软件tar球用户可以做到 典型的步骤:
$ gunzip < mycode.tar.gz | tar xvf -
$ ./configure
$ make
$ make install
答案 0 :(得分:7)
答案 1 :(得分:6)
查看GNU autoconf / automake工具链。 Here's a free tutorial/book.
答案 2 :(得分:3)
在过去,这个过程是手工完成的。每个Makefile
都是手写的(文件make
用作一种脚本)。这在可移植性方面成了问题,因此编写了configure
脚本。 ./configure
脚本也是为每个项目手工编写的。最终,GNU使用autotools
包自动执行此操作。这包括autoconf
,automake
和其他一些内容。虽然存在替代方案,尤其是make
,但autotools
的使用最为广泛。 ......至少在GNU / Linux系统上。替代方案包括已提及的CMake,Boost.Build,Boost.Jam,SCons等。
答案 3 :(得分:1)
使用autotools创建配置脚本(将生成最后两步所需的Makefile),然后使用所有代码和内容制作tarball。
答案 4 :(得分:1)
答案 5 :(得分:1)
Autotools的。
您需要编写configure.ac和Makefile.am脚本。
Configure.ac非常简单,可以通过在源代码上运行'autoscan'来自动生成。这将生成一个'configure.scan'文件,您需要调整该文件以生成最终的configure.ac文件。
Automake.am文件全部基于约定。你可能需要这样的东西:
AUTOMAKE_OPTIONS = foreign subdir-objects
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \
-Wfatal-errors -I blah
AM_LDFLAGS = blah
bin_PROGRAMS = mybinary
mybinary_SOURCES = \
blah.h blah.cc
一切都基于命名架构:
所以dist_noinst_DATA用于构建但未安装的数据文件。
一旦你拥有这两个文件,你通常需要运行类似:
aclocal&amp;&amp; autoheader&amp;&amp; automake --add-missing&amp;&amp; autoconf的
设置构建所需的autotools文件。这可以放在shell脚本中,并在运行./configure。
之前运行