标签: automake

Autoconf - config.h在哪里?

我正在编写自己的单元测试库(使用autoconf,automake和libtool)以更好地满足我的需求(我不需要超大量的功能,只需要测试运行器和断言).我已经达到了似乎可以使用的程度.

当然,它使用config.h来确定要包含的标头.问题是,我不知道在哪里的config.h应该去,因为它往往会与其他项目的config.h中,以及事实,即它是依赖于架构容易冲突.

我的方法应该用于安装此标头?(所有其他标题都需要它)

automake autoconf autotools libtool

6
推荐指数
1
解决办法
3083
查看次数

ubuntu 11.04上的autoconf错误

我一直在谷歌搜索和安装库一段时间,但我无法用autoconf解决这个问题.

我已下载了一个我想编译的程序,做了一些更改,需要分别运行autogen.sh和./configure并make install.

但是,当我尝试运行autogen.sh时,我收到以下错误;

configure.ac:225: error: possibly undefined macro: AM_PATH_GTK_2_0
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Run Code Online (Sandbox Code Playgroud)

所以我继续,下载autoconf-2.68,automake-1.11,m4-1.4.16,并尝试了sudo apt-get install libgtk2.0-dev,其中没有一个改变了结果.当我尝试aclocal,我再次得到错误

configure.ac:225: warning: macro `AM_PATH_GTK_2_0' not found in library
Run Code Online (Sandbox Code Playgroud)

我现在卡住了,无处可去.所以我很高兴有任何建议.

linux gtk automake autoconf compilation

6
推荐指数
2
解决办法
8420
查看次数

Libtool只创建静态库 - 我需要共享对象

我有几个C++类,我想使用autotools和libtool将它们编译成一个共享库.这些是我的configure.ac和Makefile.am文件:

configure.ac:

AC_PREREQ(2.67)
AC_INIT(somelib.so, 1.0, someone@somewhere.com)
AC_LANG(C++)
AM_INIT_AUTOMAKE(somelib, 1.0)

LT_INIT([disable-static])
AM_DISABLE_STATIC
AM_PROG_LIBTOOL
AC_LIBTOOL_DLOPEN
AC_PROG_LIBTOOL

AC_CONFIG_SRCDIR([Logger.cpp])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC

AC_SUBST(LIBTOOL_DEPS)
AC_LTDL_DLLIB
AC_PROG_RANLIB

AC_SUBST(LIBTOOL_DEPS)
AC_LTDL_DLLIB

# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([cstring unistd.h pthread.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T

# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_TYPE_SIGNAL
AC_CHECK_FUNCS([mkdir strdup dup2])
AC_CHECK_LIB(pthread, pthread_create, [], [ echo "ERROR!: libpthread not found!"; exit -1], [])
AC_CHECK_LIB(xml2, htmlReadMemory, [], [ echo …
Run Code Online (Sandbox Code Playgroud)

c++ linux automake autotools libtool

6
推荐指数
1
解决办法
2736
查看次数

条件子目标对象

我有选项subdir-objects设置configure.ac:

AM_INIT_AUTOMAKE([subdir-objects])
Run Code Online (Sandbox Code Playgroud)

有没有可能有条件地禁用它特别是Makefiles(Makefile.am)?

谢谢.

automake gnu build autotools

6
推荐指数
1
解决办法
6925
查看次数

将Autotools用于具有特定于平台的源代码的项目

我正在开发一个目前用C语言编写的项目,但我计划在ASM中为至少两个平台(x86_64和arm)编写一些函数.所以我可能有一些源文件:

  • 通用/ one.c
  • 通用/ two.c
  • 通用/ three.c
  • ARM/one.s
  • x86_64的/ two.s

我喜欢它,以便配置脚本在可能的情况下选择.s文件.c文件.所以建立在arm上将是one.s,two.c,three.c等.

使用Automake很难或不可能做到这一点.但如果我放弃Automake,我将不得不追踪自己的依赖(呃).

最好的方法是什么?

c assembly automake autoconf autotools

6
推荐指数
1
解决办法
1267
查看次数

Automake忽略了丢失的NEWS/AUTHORS/COPYING/etc. 标准文件

Automake要求我的项目的源目录中存在以下"标准"文件:

  • 安装
  • 新闻
  • 自述
  • 复印
  • 作者
  • 更新日志

显然,这些文件都不是构建程序所必需的,但Automake拒绝在没有它们的情况下运行.我知道--add-missing将生成样板文件的标志,但我宁愿根本没有文件.

有没有办法强制Automake运行并忽略丢失的文件而不生成它们?

automake autotools

6
推荐指数
1
解决办法
1916
查看次数

Android NDK:使用libtool库

使用autotools创建以下库:

Makefile.am:

lib_LTLIBRARIES = libandi.la
libandi_la_SOURCES = $(SMILE_SOURCES)
libandi_la_CPPFLAGS = $(SMILE_CPPFLAGS)
libandi_la_LIBADD = $(SMILE_LIBS)
libandi_la_LDFLAGS = -no-undefined

///////////////////////////////////////////////////////////////////////////
/////////This will be gone since I want to use libandi in android project
///////////////////////////////////////////////////////////////////////////
bin_PROGRAMS = AndiExtract
AndiExtract_SOURCES = src/AndiExtract.cpp 
AndiExtract_CPPFLAGS = $(Andi_CPPFLAGS)
AndiExtract_LDADD = $(Andi_LIBS) -libandi -->I need this linker in android
//////////////////////////
///////////////////////////////////////////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)

我可以用android ndk编译它,所以这不是问题.

但是我如何链接到libtool库libandi.la?在android.mk文件中?它甚至可能吗?我在网上搜索时找不到答案.谢谢.

automake android shared-libraries libtool android-ndk

6
推荐指数
0
解决办法
882
查看次数

Libtool安装警告:xxx.la尚未安装在/ user/local/lib中

当使用autoreconfautomakelibtool构建和安装我的申请,我总是警告" 的libtool:警告:xxx.la尚未安装在/用户/ local/lib目录 "和" libtool的:警告:请记住运行"的libtool --finish/usr/local/lib ".我已经尝试了很多方法,例如清理项目,并使用make clean重新配置,但仍然无法摆脱警告.这是我尝试过的:

./configure
make clean
make
make install prefix=~/Software/
Run Code Online (Sandbox Code Playgroud)

这里是我的一部分configure.ac,涉及到automakelibtool.

AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror])
LT_INIT([dlopen])
Run Code Online (Sandbox Code Playgroud)

为什么会发出这些警告,我该如何摆脱它们呢?

automake autotools libtool

6
推荐指数
1
解决办法
2920
查看次数

如何禁用配置脚本中的依赖关系跟踪

我正在尝试使用不同的构建系统构建库,但库中的config.h文件需要在运行autoconf生成的配置脚本后生成的头文件.

这是我尝试生成所需config.h文件的一系列步骤

autoreconf -ivf 
./configure --disable-dependency-tracking
Run Code Online (Sandbox Code Playgroud)

构建系统保证gflags链接库,并且标头将在预处理时可用.但configure脚本退出时出现以下错误

configure: error: Please install google-gflags library
Run Code Online (Sandbox Code Playgroud)

有什么方法可以获得所需库的列表(例如gflags),然后将参数传递给configure脚本,告诉它假设该库存在于系统中?我经历了两者的帮助输出,autoreconf并且./configure无法解决这个问题.

很抱歉有很长的解释和问题.我很新autoconf,等等.

automake autoconf configure

6
推荐指数
1
解决办法
580
查看次数

带有 automake/autoconf 条件的 Makefile

谁能告诉我是否有办法向 Makefile.am 插入条件块,以便将其进一步传递给由 autotools 创建的 Makfile?

下面是一个例子:

ifeq "$(SOMEVAR)" ""
SOMEVAR="default_value"
endif
Run Code Online (Sandbox Code Playgroud)

这似乎是做有条件的事情的常见 Makefile 方式。Automake 切断 endif 行并最终失败并显示如下消息:

Makefile:390: *缺少‘endif’。停止。

有什么想法吗?

python automake autoconf conditional

5
推荐指数
1
解决办法
1944
查看次数