问题标签 [automake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4999 浏览

autotools - 在配置脚本中检查 automake/autoconf 版本

我正在尝试编辑一个配置脚本,如果它高于 Automake 版本 x.xx,它将执行这段代码,如果不是,它将执行另一段代码。

因此,我需要版本为 1.10 或更高版本,然后在这种情况下我想这样做:

并且,否则:

所以我会假设它看起来像这样(在configure.in):

另外,我应该检查 autoconf 或 automake 版本吗?可能两者兼而有之?

0 投票
3 回答
15792 浏览

autotools - 自动生成二进制文件到 bin/ 而不是 src/

我搜索了这个问题的答案,但找不到任何好处。也许他们老了,有些东西变了,所以我再问一次。

我有一个目录结构:

我的项目

  • 源代码

我想要这样,当我在根目录中制作时,将二进制文件放在 ./bin 中,而不是杂乱无章的 ./src。但是怎么做?

编辑:我正在使用 C++。我的 Makefile.am 没有什么特别的。只是 bin_PROGRAM 和 _SOURCES 变量。

当我运行 make 时,生成的二进制文件被放入 ./src。我只是希望它们在 ./bin 中。

0 投票
3 回答
2869 浏览

automated-tests - Automake:如何有效地处理全局和本地“make check”?

在一个更大的项目中,我已经设置./tests/Makefile.am好在调用make check. 该文件global_wrapper.c包含设置/故障代码,它调用在几个子目录中实现的测试函数。

效果很好。但是测试需要很长时间,所以我希望能够选择只执行来自单个子目录的测试。我一开始就是这样做的。

我添加了子目录:

在子目录中,我添加了本地包装器和Makefile.am's:

这也很有效——当我make check在 subdirectory中调用时foo,只执行 foo 测试。

但是,当我现在调用make check./tests所有测试都执行了两次。一次通过global_test,一次通过本地测试程序。

如果我省略SUBDIRSglobal 中的语句Makefile.am,则子目录 makefiles 不会生成。如果我TESTS从 local中省略Makefile.ammake check则不会对本地目录执行任何操作。

我对 automake 不太熟悉,但我很确定有一些方法可以解决这个难题。这里有人可以给我一个提示吗?

0 投票
1 回答
6657 浏览

makefile - 将 pkg-config 与自动工具一起使用

我正在学习 autotools 并通过一个 hello world 场景完成它,现在想尝试将一些 cppunit 测试包装到一个包中并使用 autotools 构建它。为了构建软件包,必须在系统上安装 cppunit。在构建的 ./configure 部分检查此问题的最佳方法是什么。

我查看了AC_CHECK_LIB一些关于使用 pkg-config 的信息。我将如何在 autotools 领域中使用 pkg-config 来检查构建系统上是否存在 cppunit,然后添加包含和链接行。

任何帮助,将不胜感激。谢谢。

史蒂夫

0 投票
1 回答
818 浏览

makefile - 使用 GCC 和 autotools 为单个源文件设置编译标志的最佳方法是什么?

我需要使用自动工具禁用单个文件的优化标志。最好的方法是什么?

0 投票
2 回答
4032 浏览

c++ - 如何通过 autoconf/automake 排除 boost 库/头文件包含问题?

我是 autom4te 的新手,我正在尝试使用 autoconf/automake 在多个架构上构建和链接 C++ 程序。使链接复杂化的事实是项目需要提升(文件系统、系统、程序选项)。

我正在使用 boost.m4 (来自http://github.com/tsuna/boost.m4/tree/),它似乎成功地找到了所有的库和头文件。

不幸的是,链接仍然失败,让我感到困惑。

这些是相关的行configure.ac

并在src/Makefile.am

这些没有错误,它甚至可以找到库和头文件:

但是,当我运行时make,我收到错误:

重复令人作呕。

我什至不确定如何进行测试以查看它是否包含正确的目录。是的,我知道-tg++ 上有一个标志,但我不完全知道如何传递它(从 autom4te 中)。

我认为这与同一台机器上的多个版本的 boost 库和头文件有关,对此我无能为力。

0 投票
3 回答
16382 浏览

makefile - 如何在 Makefile.am 脚本中指定我只想编译对象 .o 文件?

我有一个Makefile.am负责构建最终应用程序二进制文件:

在 src 目录中还有一个名为的子目录ctrnn,其中包含一个附加的Makefile.am

现在,ctrnn/Makefile.am应该只生成目标.o文件,其想法是顶级Makefile.am应该使用子目录中生成的目标文件ctrnn来构建二进制文件。

这是ctrnn/Makefile.am

基于这个Makefile.am文件,我想得到 network.o 和 neuron.o。我正在Makefile使用 Automake 等生成相应的文件,但是当我尝试然后执行 make 文件时,它什么也没做,只是说:

我知道这是为什么,我需要指定构建目标。ctrnn/Makefile.am但是,鉴于我不想构建需要bin_PROGRAMS实际目标文件network.o和的二进制文件,我该如何在脚本中执行此操作neuron.o

(请注意,如果我确实指定了 bin_PROGRAMS 名称,它最终会正确地抱怨对 main 的未定义引用)。

我做错了什么?

0 投票
2 回答
529 浏览

c - 使用 automake 将来自不同项目的一个标题添加到我的项目中

我正在开发一个使用 automake 构建系统的相对较大的项目。

现在的问题是我需要将项目与来自另一个项目的库链接(这工作正常),但我还需要包含来自另一个项目源树的标题(api.h)。

INCLUDES = -I@REMOTE_PROJECT_DIR@

在 Makefile.am 中不起作用,因为在远程源目录中有 .h 文件的名称是重叠的。我怎样才能只添加api.h

我在项目的包含目录中使用了符号链接,但现在我需要将源推送到公共仓库中,并且使用它的每个人都有另一个项目在不同的目录中,所以我需要使用配置参数。

0 投票
3 回答
4717 浏览

c++ - 编写 Makefile.am 来调用 googletest 单元测试

我正在尝试将我的第一个单元测试添加到现有的开源项目中。具体来说,我添加了一个名为 audio_manager 的新类:

我创建了一个镜像实现文件结构的 src/test 目录结构,并编写了我的googletest单元测试:

现在,我正在尝试设置我的 Makefile.am 来编译和运行单元测试:

我从以下位置复制了 Makefile.am:

有没有人给我一个简单的食谱,或者对我来说是神秘的自动制作文档?:)

0 投票
4 回答
221049 浏览

makefile - Makefile.am 和 Makefile.in 是什么?

这两个文件大多出现在开源项目中。

它们的用途是什么,它们是如何工作的?