问题标签 [autoconf]

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 投票
1 回答
5973 浏览

makefile - 如何在 automake 中创建依赖项?

我现在有一个 Makefile.am 文件,如下所示:

编译时,bar.F90 给出 bar.o。但是,bar.F90 依赖于其他几个 Fortran 文件(cat.F90、dog.F90、pig.F90)。如果这些依赖项之一的源发生更改,我想设置 Automake 以重建 bar.o。

我一直在阅读 automake/autoconf 的 GNU 手册,但无法找到解决方案。谢谢阅读。

0 投票
3 回答
6331 浏览

linux - Boost 和 Autoconf

我正在制作一个使用 Autoconf 的项目。我有以下内容configure.ac

当我运行时configure,它说它找不到这个头文件:

这很奇怪,因为我有 Boost。如果我删除检查,代码编译,我安装了 Boost:

请注意,我对 SDL 做了完全相同的操作,并且可以正常工作。

...

0 投票
7 回答
30074 浏览

makefile - Autotools 的默认编译器标志

我想知道如何设置默认编译器/链接器/等。如果我使用 Autoconf/Automake 组合的标志。

例如,如果我没有设置任何东西,默认编译器标志是“-O2 -g”。我可以用其他东西覆盖它,例如,如果我想调试:

但是我发现默认配置很愚蠢,因为如果我启用优化,调试将变得不可能。configure因此,如果我不带参数运行,默认标志应该是“-O2”或“-O0 -g” 。我该怎么做?

编辑:我尝试了以下解决方案:

  • 放入progname_CXXFLAGS=whateverMakefile.am。它不起作用,因为它将标志添加到默认标志而不是替换它们。
  • 放入CXXFLAGS=whateverconfigure.ac。这行得通,但是我以后不能覆盖它。
0 投票
3 回答
5773 浏览

c - 转换为 libtool 时 automake 和 autoconf 找不到 libtool

我正在尝试将 libcs​​v 转换为使用 libtool,这样我就可以在 mac os x 上使用它而不会破坏 makefile。当我尝试运行从工具生成的 makefile 时,出现以下错误:

我正在运行 OS X 10.5。因此,经过一番搜寻后,我注意到生成的 makefile 有一个空的 libtool var:

如果我将 LIBTOOL 设置为 libtool,那么一切都很好。我假设我在下面的 autoconf 或 automake 文件中犯了一个错误:

如果有任何帮助,这里是 config.log 的一部分:

那么有谁知道我做错了什么?

提前致谢。

0 投票
1 回答
1085 浏览

c - 选择 autoconf 和 automake 版本

我看到我的 ubuntu linux 中有很多版本的 autoconf 和 automake 可用。如果我想从头开始创建一个新项目,最好的选择是什么,最新版本还是旧版本?

0 投票
1 回答
155 浏览

c - 将 autoconf 中的共享库 ELF 项目移植到 OS X

如何使用 autoconf 宏有条件地更改配置脚本或 Makefile 中的值,它通过 AC_OUTPUT 输出。

目标是使用 AC_CANONICAL_TARGET 或其他方式来识别我在 OS X 上,然后允许我的 Makefile 通过删除 -shared 并将 -soname 替换为 -dylib_install_name 来适应 LDFLAGS。

所以我基本上需要学习如何使用检查目标主机的条件语句来修改 configure.ac 文件中的 AC_SUBST 值或局部变量。

我必须补充一点,我一直在尝试使用 AC_COMPILE_IFELSE 和 AC_LANG_PROGRAM 来编译这段代码。

虽然我没有收到任何错误,但我无法真正确认它是否有效。当我在 FreeBSD 或 Darwin 上运行新脚本时,没有与之相关的输出。我也总是使用 autoconf -Wall。

AC_COMPILE_IFELSE 的第二个和第三个参数是 [is_darwin=yes], [is_darwin=no] 但我如何访问这些值?

非常感谢您的任何帮助。

0 投票
2 回答
180 浏览

makefile - make install 导致重新编译

我正在编写一个主 makefile 来编译和安装多个基于 autoconf 的库,它们相互依赖。第一次一切正常。问题是:如果我正在单独处理这些库之一并执行“make && make install”前缀文件夹中的头文件(即使它们未被触及)。这会导致所有依赖库从头开始编译。

有没有办法避免不必要的重新编译而不侵入makefile?

0 投票
1 回答
525 浏览

makefile - 在configure中查找底层编译器

我有一个使用编译器包装器编译的应用程序,例如h5fc/h5cc(HDF5 编译器包装器)或mpif90/mpicc(MPI 编译器包装器)。这些只是包装器,可以使用-show参数查看真正的底层编译器,例如

在这两种情况下,底层编译器都是 ifort。现在我正在使用configure.ac生成一个配置脚本来设置Makefile,并且我希望能够向编译器添加依赖于编译器的参数,但这需要有代码configure.ac来找出 or 的底层编译器h5fc/cc是什么mpif90/cc。我想这一定是可能的,但我不知道该怎么做。有没有人有什么建议?

额外的问题:事实上,在某些情况下,我需要使用h5pfc/cc启用 MPI 的 HDF5 包装器进行编译:

这将需要迭代搜索,因为我需要做mpif90 -show......

0 投票
3 回答
1390 浏览

function - Autoconf 生成带有损坏功能的配置 (ac_fn_set_status, ac_fn_exit)

我正在尝试为我的项目设置 autoconf。除了在 ./configure 中找不到 ac_set_<...> 函数外,我的一切都“正常”工作。如果我直接运行它们,它们在 configure.status 中工作正常。

具体来说,我遇到了 as_fn_set_status 和 as_fn_exit 的问题。

如果我手动编辑配置文件并将这两个函数移动到配置脚本的顶部,一切正常。

为了达到这一点,我:

  1. 写了configure.ac
  2. 运行 autoreconf -i
  3. 跑了./配置

结果行类似于:

有 3-4 行发生错误。

关于可能产生这种效果的任何想法?这是我的configure.ac:

0 投票
2 回答
40451 浏览

tar - Autotools - tar 这看起来不像 tar 存档

运行后,make distcheck我收到消息说我已成功构建包并准备好分发。如果我解压它tar.gztar -zxvf hello-0.2.tar.gz它会成功提取其所有内容。但是,当我尝试在不同的机器中提取它们时,我得到:

奇怪的是它以前工作过。

在我试图构建包的机器上,我已经更新了我automake 1.10.1, autoconf 2.61, and tar 1.20 to automake 1.11.1, autoconf 2.65, and tar 1.23的问题,但仍然是同样的问题。

任何想法可能是什么问题?