标签: automake

Autotools:config.guess,depcomp或ltmain.sh应该存储在SVN repo中吗?

我正在接管一个项目,我在subversion存储库中看到一些属于libtool和automake分发的文件,例如config.guess,depcomp或ltmain.sh.我认为这是完全错误的,因为当我检查时,我应该在我的机器上安装autotools并执行autoreconf.

你怎么看 ?我错过了在存储库中存储这些文件的意义吗?

automake autotools libtool

3
推荐指数
1
解决办法
1529
查看次数

在 automake 中生成生成源列表(a la foreach)

我目前正在开发一个使用模板相当广泛的项目,并在实例化过程中遇到内存限制。我已将实例化为许多非常简单的文件,这些文件都是仅包含包含的三行文件。

我让这些由 Makefile.am 中的规则生成。现在我有一个很长的文件列表,应该在我的 Makefile 中生成,并且想用类似 foreach 的表达式重构这个列表。更具体地说:我有一条线

libfoo_la_SOURCES = a_0.cpp a_1.cpp ... b_0.cpp b_1.cpp ... c_0.cpp c_1.cpp ...
Run Code Online (Sandbox Code Playgroud)

可以更简洁地表示为

libfoo_la_SOURCES = $(foreach i,a b ...,$(foreach j,0 1 ...,$i_$j.cpp))
Run Code Online (Sandbox Code Playgroud)

然而,第二个构造不仅被 automake 警告,而且不起作用:以这种方式给出的文件既没有编译也没有清理。

我当前的解决方法是通过 shell 脚本生成此文件列表。

任何想法如何实现这个迭代?

automake makefile autotools

3
推荐指数
1
解决办法
1219
查看次数

使用 GNU AutoTools 设置和使用数据目录路径

我正在尝试将 GNU AutoTools 用于我的 C++ 项目。我编写了configure.ac、makefile.am等。我有一些程序在执行过程中使用的文件,例如模板文件、XML模式等。因此,我沿着可执行文件安装/复制这些文件,为此我使用类似的文件:

abcdir = $(bindir)/../data/abc/
abc_DATA = ../data/knowledge/abc.cc
Run Code Online (Sandbox Code Playgroud)

现在它正确复制了文件,我的程序安装结构如下所示:

<installation_dir>/bin/<executableFile>
<installation_dir>/data/abc/abc.cc
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在源代码中我实际上使用了这些文件(abc.cc 等),为此我需要这些文件所在的路径来打开它们。一种解决方案是定义(使用 AC_DEFINE)一些变量,例如 _ABC_PATH_ ,它指向安装路径,但究竟如何做到这一点?或者有没有更好的方法可以做到这一点。例如,在源代码中,我做了类似的事情:

...
ifstream input(<path-to-abc-folder> + "abc.cc"); // how to find <path-to-abc-folder>?
..
Run Code Online (Sandbox Code Playgroud)

c++ automake autoconf gnu autotools

3
推荐指数
1
解决办法
1122
查看次数

XI.:找不到命令,并且无法构建某种软件,怎么了?

错误信息如下:

./libtool: line 1129: X-I.: command not found
./libtool: line 1129: X-DLT_CONFIG_H=<config.h>: command not found
./libtool: line 1129: X-DLTDL: command not found
./libtool: line 1129: X-I.: command not found
./libtool: line 1129: X-I.: command not found
./libtool: line 1129: X-Ilibltdl: command not found
./libtool: line 1129: X-I./libltdl: No such file or directory
./libtool: line 1129: X-I./libltdl: No such file or directory
./libtool: line 1129: X-g: command not found
./libtool: line 1129: X-O2: command not found
./libtool: line 1129: X-MT: command …
Run Code Online (Sandbox Code Playgroud)

automake autoconf build autotools libtool

3
推荐指数
1
解决办法
3403
查看次数

在程序中使用 autoconf 中的“program_name_transform”

在我使用 autoconf 和 automake 的项目中,我有两个可执行文件,比如“foo”和“bar”。假设“foo.c”看起来像

int main()
{
    exec ("bar");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

即,“foo”使用“bar”。一旦我这样做就可以正常工作./configure && make && make install。但是,autoconf 提供了一个选项来转换程序名称。例如,我可以做./configure --program-suffix=-2.0. 然后“foo”和“bar”将被安装为

/usr/bin/foo-2.0
/usr/bin/bar-2.0
Run Code Online (Sandbox Code Playgroud)

在这种情况下,“foo”中对“bar”的引用将是不正确的,因为bar系统中将没有(应该是bar-2.0)。有什么办法可以让 autoconf/automake 自动调整这个引用?

automake autoconf makefile autotools

3
推荐指数
1
解决办法
383
查看次数

automake 环境变量条件

我有一个文件 Makefile.am 我用来生成一个 Makefile。在生成的 Makefile 中,我想要这样的东西:

ifndef SOURCECODEPATH
   SOURCECODEPATH := /home/root/source_code_path
endif
Run Code Online (Sandbox Code Playgroud)

看起来很简单,有人知道我该怎么做吗?

automake conditional makefile autotools environment-variables

3
推荐指数
1
解决办法
4208
查看次数

Automake:AM_CFLAGS无效

我试图在Automake中添加一些编译选项,但没有一种方法可行.

这是我的configure.ac:

AC_INIT(...)
AC_PREREQ([2.59])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.10 foreign -Wall no-define])
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile test/Makefile])
AC_LANG(C++)
AC_OUTPUT
Run Code Online (Sandbox Code Playgroud)

我有父母Makefile.am(在顶级目录):

#AM_CFLAGS = ... # doesn't work
AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
SUBDIRS = src test
dist_noinst_SCRIPTS = autogen.sh
Run Code Online (Sandbox Code Playgroud)

Makefile.am每个源目录; src/Makefile:

include_HEADERS = ...
lib_LIBRARIES = ...
Run Code Online (Sandbox Code Playgroud)

并且test/Makefile:

#AM_CFLAGS = ... # doesn't work
bin_PROGRAMS = myprog #test
myprog_SOURCES = ...
myprog_LDADD = ../src/libmylib.a
#myprog_CFLAGS = ... # Doesn't work either
Run Code Online (Sandbox Code Playgroud)

我尝试取消注释评论行的所有组合,即:

  • 添加 …

unix automake gcc compilation autotools

3
推荐指数
1
解决办法
3393
查看次数

Automake 需要“Autoconf 2.65 或更高版本”,但我已经安装了 Autoconf 2.69

现在我正在尝试在我的 Mac 上构建 Automake,到目前为止一切都进展顺利。我构建了 Autoconf 和 m4,没有任何问题的包(而不是 git pulls)。然后我到了 Automake,这就是事情分崩离析的地方:

    checking whether autoconf is installed... yes
    checking whether autoconf works... yes
    checking whether autoconf is recent enough... no
    configure: error: Autoconf 2.65 or better is required.
Run Code Online (Sandbox Code Playgroud)

如果我构建并安装 autoconf 2.68,问题仍然存在。我在这个上缺少某种技巧吗?

automake autoconf

3
推荐指数
1
解决办法
7997
查看次数

math.h即使包含在makefile中也不包括在内

我正在尝试从http://www.irisa.fr/metiss/guig/spro建立SPRO

他们使用Automake 1.6.2生成makefile.

我的问题是,当我尝试制作项目时,我收到错误

"undefined reference to 'sin' " 等等

这是错误图像

在此输入图像描述

此错误是由于数学库未包含在-lmflag中但-lm存在于makefile.am

这是我的 makefile.am

AUTOMAKE_OPTIONS = 1.4 foreign

ACLOCAL_AMFLAGS = -I auxdir

LDADD    = -lm -L. -lspro @sphere_lib@
INCLUDES = @sphere_include@

include_HEADERS = spro.h
lib_LIBRARIES = libspro.a
noinst_HEADERS = getopt.h

libspro_a_SOURCES = system.h spro.h sig.c spf.c header.c misc.c lpc.c   convert.c fft.c

bin_PROGRAMS = scopy slpc slpcep sfbank sfbcep
noinst_PROGRAMS = scompare

scopy_SOURCES = scopy.c getopt.c getopt1.c
scopy_DEPENDENCIES = libspro.a

slpc_SOURCES = …
Run Code Online (Sandbox Code Playgroud)

c c++ automake makefile

3
推荐指数
1
解决办法
137
查看次数

automake在目录中添加所有c文件

在automake的Makefile.am中,程序的源代码如下所示:

bin_PROGRAMS = os345v1

os345v1_SOURCES = os345.c os345interrupts.c os345semaphores.c

而不是指定单个文件,而是如何在特定目录和子目录中添加所有c文件?

automake autoconf

3
推荐指数
1
解决办法
2786
查看次数