首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autotools -所需的示例

Autotools -所需的示例
EN

Stack Overflow用户
提问于 2015-02-17 13:33:05
回答 1查看 711关注 0票数 3

我希望能在基于良好实践的自动化工具包构建(编译)过程方面得到一些帮助。我正在编写一个工具包,它由几个外部库和几个内部库以及演示工具组成。直到现在,我还在做我自己的makefile脚本来编译它,但是现在我想切换到autotools,也就是说,我想从我的古怪脚本转到更标准化的东西。所以我需要的是一些帮助,一个我可以学习的最低限度的例子。这一最低限度的例子应符合“良好做法”原则,并保持以下树结构:

代码语言:javascript
复制
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 

通常,我在演示文件夹中有我的演示工具,在单独的子文件夹下使用头和库从包含和库文件夹编译。这意味着,在我的makefile中,我通常首先将库编译成include和lib文件夹,然后在构建工具箱时演示工具。

是否有人能为上述树形源结构提供所需的configure.ac和Makefile.am文件的最小示例(更欢迎有关源树的任何建议)?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-15 08:23:06

第一个问题将是您的库是独立安装还是链接到二进制--一个方便的库--。

在这两种情况下,您都需要使用autoconf、automake和libtool。我将忽略configure.ac文件,并将焦点放在Makefile.am中。目录应该如下所示:

代码语言:javascript
复制
  ./
    lib/
       Makefile.am 
       ...
    bin/
    ...
    Makefile.am 

在顶部的Makefile.am中,您应该拥有以下内容:

代码语言:javascript
复制
 $ cat Makefile.am 
 SUBDIRS = . lib  # note the "." which means that the current directory is executed first 

在lib Makefile.am中

代码语言:javascript
复制
 $ cat lib/Makefile.am
 noinst_LTLIBRARIES        = libexternal.a
 libexternal_a_SOURCES     = source.c source.h
 libexternal_a_LIBADD      = -lm

如果您希望独立安装库,只需将noinst替换为lib

因此,lib Makefile.am将类似于:

代码语言:javascript
复制
 $ cat lib/Makefile.am
 lib_LTLIBRARIES           = libexternal.a
 libexternal_a_SOURCES     = source.c source.h
 libexternal_a_LIBADD      = -lm
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28562749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档