问题标签 [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.
autotools - 在配置脚本中检查 automake/autoconf 版本
我正在尝试编辑一个配置脚本,如果它高于 Automake 版本 x.xx,它将执行这段代码,如果不是,它将执行另一段代码。
因此,我需要版本为 1.10 或更高版本,然后在这种情况下我想这样做:
并且,否则:
所以我会假设它看起来像这样(在configure.in
):
另外,我应该检查 autoconf 或 automake 版本吗?可能两者兼而有之?
autotools - 自动生成二进制文件到 bin/ 而不是 src/
我搜索了这个问题的答案,但找不到任何好处。也许他们老了,有些东西变了,所以我再问一次。
我有一个目录结构:
我的项目
源代码
斌
我想要这样,当我在根目录中制作时,将二进制文件放在 ./bin 中,而不是杂乱无章的 ./src。但是怎么做?
编辑:我正在使用 C++。我的 Makefile.am 没有什么特别的。只是 bin_PROGRAM 和 _SOURCES 变量。
当我运行 make 时,生成的二进制文件被放入 ./src。我只是希望它们在 ./bin 中。
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
,一次通过本地测试程序。
如果我省略SUBDIRS
global 中的语句Makefile.am
,则子目录 makefiles 不会生成。如果我TESTS
从 local中省略Makefile.am
,make check
则不会对本地目录执行任何操作。
我对 automake 不太熟悉,但我很确定有一些方法可以解决这个难题。这里有人可以给我一个提示吗?
makefile - 将 pkg-config 与自动工具一起使用
我正在学习 autotools 并通过一个 hello world 场景完成它,现在想尝试将一些 cppunit 测试包装到一个包中并使用 autotools 构建它。为了构建软件包,必须在系统上安装 cppunit。在构建的 ./configure 部分检查此问题的最佳方法是什么。
我查看了AC_CHECK_LIB
一些关于使用 pkg-config 的信息。我将如何在 autotools 领域中使用 pkg-config 来检查构建系统上是否存在 cppunit,然后添加包含和链接行。
任何帮助,将不胜感激。谢谢。
史蒂夫
makefile - 使用 GCC 和 autotools 为单个源文件设置编译标志的最佳方法是什么?
我需要使用自动工具禁用单个文件的优化标志。最好的方法是什么?
c++ - 如何通过 autoconf/automake 排除 boost 库/头文件包含问题?
我是 autom4te 的新手,我正在尝试使用 autoconf/automake 在多个架构上构建和链接 C++ 程序。使链接复杂化的事实是项目需要提升(文件系统、系统、程序选项)。
我正在使用 boost.m4 (来自http://github.com/tsuna/boost.m4/tree/),它似乎成功地找到了所有的库和头文件。
不幸的是,链接仍然失败,让我感到困惑。
这些是相关的行configure.ac
:
并在src/Makefile.am
:
这些没有错误,它甚至可以找到库和头文件:
但是,当我运行时make
,我收到错误:
重复令人作呕。
我什至不确定如何进行测试以查看它是否包含正确的目录。是的,我知道-t
g++ 上有一个标志,但我不完全知道如何传递它(从 autom4te 中)。
我认为这与同一台机器上的多个版本的 boost 库和头文件有关,对此我无能为力。
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 的未定义引用)。
我做错了什么?
c - 使用 automake 将来自不同项目的一个标题添加到我的项目中
我正在开发一个使用 automake 构建系统的相对较大的项目。
现在的问题是我需要将项目与来自另一个项目的库链接(这工作正常),但我还需要包含来自另一个项目源树的标题(api.h
)。
INCLUDES = -I@REMOTE_PROJECT_DIR@
在 Makefile.am 中不起作用,因为在远程源目录中有 .h 文件的名称是重叠的。我怎样才能只添加api.h
?
我在项目的包含目录中使用了符号链接,但现在我需要将源推送到公共仓库中,并且使用它的每个人都有另一个项目在不同的目录中,所以我需要使用配置参数。
c++ - 编写 Makefile.am 来调用 googletest 单元测试
我正在尝试将我的第一个单元测试添加到现有的开源项目中。具体来说,我添加了一个名为 audio_manager 的新类:
我创建了一个镜像实现文件结构的 src/test 目录结构,并编写了我的googletest单元测试:
现在,我正在尝试设置我的 Makefile.am 来编译和运行单元测试:
我从以下位置复制了 Makefile.am:
有没有人给我一个简单的食谱,或者对我来说是神秘的自动制作文档?:)
makefile - Makefile.am 和 Makefile.in 是什么?
这两个文件大多出现在开源项目中。
它们的用途是什么,它们是如何工作的?