问题标签 [autotools]

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 投票
8 回答
16651 浏览

linux - 当我们可以编写自己的 makefile 时,为什么还要使用像 Autotools 这样的构建工具?

最近,我将我的开发环境从 Windows 切换到了 Linux。到目前为止,我只使用 Visual Studio 进行 C++ 开发,所以很多概念,比如makeAutotools对我来说都是新的。我已经阅读了 GNU makefile 文档并且对它有了几乎一个想法。但我对 Autotools 有点困惑。

据我所知,makefile 用于简化构建过程。

  1. 为什么我们需要像Autotools这样的工具来创建 makefile?由于所有人都知道如何创建生成文件,因此我没有真正使用 Autotools。
  2. 标准是什么?我们需要使用这样的工具还是只需要手写的 makefile 就可以了?
0 投票
3 回答
894 浏览

unit-testing - 单元测试构建文件

单元测试构建文件的最佳策略是什么?

我问的原因是我的公司生产高度可靠的嵌入式设备。软件补丁不是一种选择,因为它们花费了我们的客户数千美元来分发。因此,我们有非常严格的代码质量程序(单元测试、代码审查、可追溯性等)。这些程序正在应用于我们的构建文件(如果你必须知道,我希望是自动工具),但如果感觉就像一个 hack。

呃......项目编译......将构建文件标记为已审核和单元测试。

必须有更好的方法。想法?

0 投票
1 回答
150 浏览

build-process - 如何针对另一个未安装的 autotools 项目构建一个 autotools 项目?

假设我有两个 autotools 项目:

  • libmyutils
  • libmypackage

libmypackage 库依赖于 libmyutils。有没有办法让 libmypackage 链接到并引用 libmyutils 包而不实际安装它?还是我必须实际安装 libmyutils 才能让 libmypackage 访问它?

例子:

问题是我想将 libmyutils 保留为自己的包,以便其他库能够使用它(libmypackage2、libmypackage3 等),但由于我可能正在积极地在 libmyutils 和 libmypackage 上进行开发,所以我想避免每次进行更改时都必须编译和安装 libmyutils。

这可能吗?

0 投票
2 回答
511 浏览

open-source - 自动工具生成的链接应该在上传之前替换吗?

我的主要问题是自动工具创建了指向安装、复制、丢失、安装-sh 和 depcomp 的链接。当我试图查看它们时,我看到它们是作为链接上传的,所以我用真实文件替换它们,这样它们就可以查看了。我错过了一些基本的东西吗?当我从“make dist”解压我的 gz 文件时,它是这样的:

分布树(减去源目录)

我计划删除 README_developers 并在 README 中创建两个部分。我还在考虑删除 run.sh 和 profile.sh 并使它们成为 make 测试目标的一部分(需要阅读一些内容)。我不认为 TODO 项属于源代码分发,但也许可以将它放在项目的源代码树中。任何超出链接问题的额外指针表示赞赏。

0 投票
1 回答
623 浏览

git - 如何防止 autotools 自动重新生成配置脚本?

有时由于 SCM 没有严格记住文件的时间戳,生成的 Makefile 会认为它需要重新运行“autoreconf -i”或等效于从 Makefile.am 重新生成 Makefile.in,从 configure.ac 配置等..

我该如何防止这种情况?

我想阻止它,因为它会导致这些问题:

  • 创建 dist 存档(git archive --format=tar ...)时,时间戳将不正确,最终用户会遇到问题。不酷。
  • 在慢速系统上,这会使编译花费更长的时间,因为它不再是 configure、make、make install,而是 configure、autoreconf -i、configure、make make install。

我知道我可以在制作 dist tarball 之前“触摸”生成的文件,但在我看来,这只能解决 tarball 的问题,而不是开发人员的问题。解决应该可以关闭的错误功能也是一个丑陋的黑客。此外,它会破坏 git 存档,因为无论如何时间戳并不总是正确的。

其他 SCM 也有这个,所以问题不在于 (IMO) 与 git。

0 投票
1 回答
1447 浏览

opengl - 在 autoconf 脚本中处理非标准库位置的正常方法是什么?

我第一次尝试使用 GNU autoconf/automake 工具链,所以我的问题的答案可能很简单。

该程序需要 OpenGL/GLUT,其中头文件和库安装在非标准位置。我发现这些宏应该为我做所有的检查。我只是用AX_CHECK_GLUT来调用它。如何让宏找到库?我正在寻找类似的东西

./configure --with-glut-dir=/home/hanno/glut

更一般地说:在 autoconf 脚本中处理非标准库位置的正常方法是什么?当然,我可以使用 CPPFLAGS 和 LIBS 变量,但我觉得我错过了一些东西。

0 投票
1 回答
1005 浏览

shell - Cygwin下编译鱼壳?

有没有人能够在 Cygwin 下正确编译鱼?我发现这篇关于修改 configure.ac 的帖子,但我遇到了各种各样的错误。通常的配置,制作,制作安装对我不起作用,也许我在这里做错了什么......有人可以指导我如何让它编译吗?

0 投票
4 回答
549 浏览

c++ - 重构构建系统以使用 Autotools

在过去的几天里,我一直在阅读使用autotools来构建我的项目,而不是过去几个月我拼凑的 Makefile。不幸的是,我还没有找到一个例子来让我对我的项目结构目前的情况有足够的了解。

我的项目的应用程序代码中包含三个库。我正在寻找使用单个配置脚本来制作(和安装)应用程序和库的最佳方法。

0 投票
1 回答
1486 浏览

makefile - 应用前autoconf编译依赖

在过去的几天里,我一直在使用 autotools 工具,终于取得了重大进展。我遇到的一个问题是我有两个库需要在主应用程序代码之前编译。我不太确定该怎么做。我的目录结构如下,也是我的 configure.ac 的一个片段。

我需要在src/Makefile之前编译csv/Makefilegtkworkbook/ Makefile ;有没有办法指定这个?现在我收到一个关于应用程序编译过程中不存在的库(csv)的错误。

0 投票
3 回答
2763 浏览

linux - 在关联文件(文档)中增加新版本的版本号

我很想知道您如何处理新版本问题的版本号冲突。

您如何处理相关文件(如手册页等)中的版本号。

该软件是使用 gnu 工具链构建的,因此 autoconf、automake 等可用并用于应用程序的版本号。这样信息就可以被重用。

git用作vcs。

一种可能性是在 Makefile.am 中引入一个额外的新目标,该目标执行 sed/awk 以替换所有关联文件中的版本号和日期。该目标可以在新版本开发的开始(分支之后)调用一次。

然后,当人们对项目进行git clone或发布 tarball 完成时,项目可以使用正确的信息构建。当然,在开始开发新版本时必须记住运行这个 make 目标。

另一种选择是用 dist 目标的钩子替换 sed/awk。但这会使项目的 git 存储库处于没有正确版本号与关联文件关联的状态。

我更喜欢第一个解决方案,因为它还在 git 历史记录中记录了正确的版本号。

在进行 sed/awk 替换时,您更喜欢“在文件中”还是在文件中使用模板,就像 autoconf/automake 工具一样。我看到这两种方法的优点和缺点。

您如何处理关联文件的版本控制。您是在开发阶段开始时更改它们吗?是在发货前更改它们吗?您是进行 infile 替换还是更喜欢使用模板?

谢谢。