问题标签 [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.
makefile - 如何在 automake 中创建依赖项?
我现在有一个 Makefile.am 文件,如下所示:
编译时,bar.F90 给出 bar.o。但是,bar.F90 依赖于其他几个 Fortran 文件(cat.F90、dog.F90、pig.F90)。如果这些依赖项之一的源发生更改,我想设置 Automake 以重建 bar.o。
我一直在阅读 automake/autoconf 的 GNU 手册,但无法找到解决方案。谢谢阅读。
linux - Boost 和 Autoconf
我正在制作一个使用 Autoconf 的项目。我有以下内容configure.ac
:
当我运行时configure
,它说它找不到这个头文件:
这很奇怪,因为我有 Boost。如果我删除检查,代码编译,我安装了 Boost:
请注意,我对 SDL 做了完全相同的操作,并且可以正常工作。
...
makefile - Autotools 的默认编译器标志
我想知道如何设置默认编译器/链接器/等。如果我使用 Autoconf/Automake 组合的标志。
例如,如果我没有设置任何东西,默认编译器标志是“-O2 -g”。我可以用其他东西覆盖它,例如,如果我想调试:
但是我发现默认配置很愚蠢,因为如果我启用优化,调试将变得不可能。configure
因此,如果我不带参数运行,默认标志应该是“-O2”或“-O0 -g” 。我该怎么做?
编辑:我尝试了以下解决方案:
- 放入
progname_CXXFLAGS=whatever
Makefile.am。它不起作用,因为它将标志添加到默认标志而不是替换它们。 - 放入
CXXFLAGS=whatever
configure.ac。这行得通,但是我以后不能覆盖它。
c - 转换为 libtool 时 automake 和 autoconf 找不到 libtool
我正在尝试将 libcsv 转换为使用 libtool,这样我就可以在 mac os x 上使用它而不会破坏 makefile。当我尝试运行从工具生成的 makefile 时,出现以下错误:
我正在运行 OS X 10.5。因此,经过一番搜寻后,我注意到生成的 makefile 有一个空的 libtool var:
如果我将 LIBTOOL 设置为 libtool,那么一切都很好。我假设我在下面的 autoconf 或 automake 文件中犯了一个错误:
如果有任何帮助,这里是 config.log 的一部分:
那么有谁知道我做错了什么?
提前致谢。
c - 选择 autoconf 和 automake 版本
我看到我的 ubuntu linux 中有很多版本的 autoconf 和 automake 可用。如果我想从头开始创建一个新项目,最好的选择是什么,最新版本还是旧版本?
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] 但我如何访问这些值?
非常感谢您的任何帮助。
makefile - make install 导致重新编译
我正在编写一个主 makefile 来编译和安装多个基于 autoconf 的库,它们相互依赖。第一次一切正常。问题是:如果我正在单独处理这些库之一并执行“make && make install”前缀文件夹中的头文件(即使它们未被触及)。这会导致所有依赖库从头开始编译。
有没有办法避免不必要的重新编译而不侵入makefile?
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
......
function - Autoconf 生成带有损坏功能的配置 (ac_fn_set_status, ac_fn_exit)
我正在尝试为我的项目设置 autoconf。除了在 ./configure 中找不到 ac_set_<...> 函数外,我的一切都“正常”工作。如果我直接运行它们,它们在 configure.status 中工作正常。
具体来说,我遇到了 as_fn_set_status 和 as_fn_exit 的问题。
如果我手动编辑配置文件并将这两个函数移动到配置脚本的顶部,一切正常。
为了达到这一点,我:
- 写了configure.ac
- 运行 autoreconf -i
- 跑了./配置
结果行类似于:
有 3-4 行发生错误。
关于可能产生这种效果的任何想法?这是我的configure.ac:
tar - Autotools - tar 这看起来不像 tar 存档
运行后,make distcheck
我收到消息说我已成功构建包并准备好分发。如果我解压它tar.gz
,tar -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
的问题,但仍然是同样的问题。
任何想法可能是什么问题?