- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Autoconf 允许在 AC_CONFIG_HEADERS
中使用多个配置文件.来自 Autoconf manual :
— Macro: AC_CONFIG_HEADERS (header ..., [cmds], [init-cmds])
This macro is one of the instantiating macros; see Configuration Actions. Make AC_OUTPUT create the file(s) in the blank-or-newline-separated list header containing C preprocessor #define statements, and replace ‘@DEFS@’ in generated files with -DHAVE_CONFIG_H instead of the value of DEFS. The usual name for header is config.h.
...
config_asm.h
,并包括 ISA 可用性定义,如 SSE2、SSSE3、SSE4.1、AES、CLMUL、SHA 等。第二个称为
config_cxx.h
,并包括 C++ 特性的定义,如原子、alignof、alignas、同步等。用户包括顶级
config.h
其中包括从属配置文件,如
config_asm.h
和
config_cxx.h
.
AC_CONFIG_HEADERS([config_asm.h config_cxx.h])
的内容.但是我不清楚如何告诉 Autoconf 将结果写入特定的配置文件。
AC_INIT([Crypto++], [8.3], [http://cryptopp.com/bugs], [cryptopp], [http://cryptopp.com/])
AM_INIT_AUTOMAKE
AC_PROG_CXX
AC_LANG([C++])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config_asm.h])
AC_CONFIG_FILES([Makefile] [libray.pc])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_HEADERS([config_asm.h config_cxx.h])
结果是:
autoreconf -f -i
...
configure.ac:105: installing './compile'
configure.ac:95: installing './missing'
configure.ac:101: error: required file 'config_cxx.h.in' not found
Makefile.am: installing './depcomp'
最佳答案
要理解 Autoconf 文档告诉您的所有内容,需要稍微阅读字里行间的内容,并且需要对 Autoconf 有广泛的了解才能识别文档还有哪些相关内容要说。特别是,
Make
AC_OUTPUT
create the file(s) in the blank-or-newline-separated listheader
AC_OUTPUT
生成头文件的作用非常类似于生成通过
AC_CONFIG_FILES
指定的文件的作用。 :它从模板生成它们。在标题的情况下,它需要不同形式的模板,并根据一组不同的符号定义(来自
AC_DEFINE
的符号定义,而不是来自
AC_SUBST
的符号定义)填充它,但它仍然只是模板处理。稍后在
AC_CONFIG_HEADERS
中还有一条关于此的额外线索。描述,它说的地方
Usually the input file is named
header.in
; however, you can override the input file name [...]
configure
都没有也不是其生成的
config.status
编写或修改模板。那么,基本的答案是
您可以通过控制模板来控制每个符号定义在哪个或多个标题中 .
autoheader
来(重新)生成需要的配置头模板是正常的。 ,通常由
autoreconf
控制.你仍然可以这样做,但是
autoheader
总是将其所有输出发送到
AC_CONFIG_HEADERS
中定义的第一个 header 。称呼。 (它甚至不会为任何其他标题创建空模板,这就是为什么您会收到关于
config_cxx.h.in
未找到的错误。)
autoreconf
将导致第一个被更新,我建议如果有两个标题都没有包含所有定义,那么选择“以上都不是”作为第一个标题。而是定义另一个在实践中未使用但首先列出的 header 。从自动管理的部分构建两个真实配置头的模板。
configure
时使脚本自动运行。通过
AC_CONFIG_COMMANDS_PRE
启动脚本,及时产生适当的效果。 .这可能看起来像这样:
AC_CONFIG_COMMANDS_PRE([pushd "$srcdir" && { ./generate_header_templates; popd; }])
autoreconf
时,您仍然需要至少存在每个想要的模板文件的空版本。 , 尽管。
关于autotools - 如何切换到 Autoconf 中的下一个配置头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56193203/
我正在构建我的第一个 autoconf 托管包。 但是,我在任何地方都找不到任何简单的示例来说明如何指定所需的库,并在不同的地方找到该库。 我目前有: AC_CHECK_LIB(['event'],
现在我正尝试在我的 Mac 上构建 Automake,到目前为止一切都进展顺利。我构建了 Autoconf 和 m4,没有任何问题(与 git pulls 相反)。然后我去了 Automake,这就是
我正在尝试在 RedHat Linux 机器上构建 ZooKeeper。 (ZooKeeper 到底是什么可能并不重要:-) 当我按照包装说明进行操作时,我得到: $ autoreconf -if
我对 autoconf 和 automake 的工作原理有非常基本的了解,这是从各种教程中收集的。但是,由于我希望我的库在构建过程中具有灵 active ,因此它们需要具有其他软件中常见的 --wit
为什么 autoconf 脚本中的条件语句在它们的变量前加上“x”?例如,GNU 提供的用于测试 Boost 的宏具有条件,例如 if test "x$want_boost" = "xyes"; th
我已经从 Autoconf Archive 下载了一个宏,我想使用它。我必须在我的 configure.ac 文件中放入什么才能使用这个宏? 最佳答案 您可能希望将 AC_CONFIG_MACRO_D
我正在开发一个将与 GNU autoconf/automake 一起分发的项目,并且我有一组调用 awk 脚本的 bash 脚本。我希望 bash 脚本最终出现在 $PATH 中,而不是 awk 脚本
我正在使用自动配置。现在我有一个生成的中间 .cpp 文件。我想在执行“make clean”时删除 .cpp 文件。 我尝试在 CONFIG_CLEAN_FILES 中指定文件变量,但这仅在我执行
我正在尝试构建 Gecko 代码,我从 Github 克隆了它: git clone https://github.com/mozilla/gecko-dev.git 我收到 autoconf 2.1
我正在运行 autoconf 并配置将 SHELL 设置为“/bin/sh”。这造成了巨大的问题。如何强制 SHELL 为 autoconf 的 '/bin/bash'? 我试图让它在 osx 上运行
文件说 Macro: AS_IF (test1, [run-if-true1], ..., [run-if-false]) Run shell code test1. If test1 exits w
当我运行 ./configure 时,它有时会认为它太旧了,并通过丢失的脚本重新运行 autoconf 以重新生成自身。有时它会导致奇怪的损坏,因为 autoconf 目标机器比最初用于生成配置的
我有一个configure.ac文件,其中包含以下行: AC_DEFINE(CONF_XDISP, ":8", "X screen number") 这些常量在C源代码中用于设置编译默认值。我还有一个
我想在 [] 中重新组合多个语句: AC_ARG_WITH( [float], [AS_HELP_STRING( [--with-float], [us
我正在尝试编写一个configure.ac文件,以便生成的配置脚本搜索包含给定静态库的库目录,例如libsomething.a.我怎样才能做到这一点?目前我让它只检查一个位置: AC_CHECK_FI
我已经了解了 CFLAGS and CPPFLAGS 之间的区别。但我的 Makefile.am 目前同时使用 DEFS 和 CPPFLAGS,我不确定其中的区别。 DEFS += -DLOCALED
我已经了解了 CFLAGS and CPPFLAGS 之间的区别。但我的 Makefile.am 目前同时使用 DEFS 和 CPPFLAGS,我不确定其中的区别。 DEFS += -DLOCALED
在我的 configure.ac 文件中,我有这样的警告和错误: AC_MSG_ERROR([找不到 Boost Math 头文件,您是否正确指定了 --with-boost-include-path
我正在尝试构建一个项目,但它抛出了一个错误: autoreconf: running: /usr/bin/autoconf --force configure.ac:19: error: possib
我有一个 C++ autoconf 管理的项目,我正在适应在 FreeBSD 主机上进行编译。 原来的系统是 Linux,所以我做了一个 AM_CONDITIONAL 来区分我正在构建的主机并将代码分
我是一名优秀的程序员,十分优秀!