首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不使用config.h.in作为模板

不使用config.h.in作为模板
EN

Stack Overflow用户
提问于 2018-01-25 06:15:19
回答 1查看 1.9K关注 0票数 2

我正试图向Autotools提供一个config.h.in。该主题在4.8.1配置头模板的Autoconf手册中进行了介绍。config.h.in看起来是这样的:

代码语言:javascript
运行
复制
/// \file config.h
/// \brief Library configuration file

#ifndef CRYPTOPP_CONFIG_H
#define CRYPTOPP_CONFIG_H

// define this if running on a big-endian CPU
#undef CRYPTOPP_BIG_ENDIAN

// define this if running on a little-endian CPU
#undef CRYPTOPP_LITTLE_ENDIAN

#endif  // CRYPTOPP_CONFIG_H

我们的configure.ac包括用于测试的以下内容:

代码语言:javascript
运行
复制
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile] [libcryptopp.pc])
AC_CONFIG_SRCDIR([configure.ac])

AC_PROG_LIBTOOL
LT_INIT

AC_PROG_CXX
AC_LANG([C++])
AC_PROG_GREP

autoreconfconfigure运行之后,就会有一个config.h。问题是,它没有遵循模板config.h.in。它看起来像是由这些工具产生的新的config.h

当我检查config.log时,我只看到一次提到config.h。我找不到更多关于正在发生的事情的信息:

代码语言:javascript
运行
复制
config.status:1172: creating Makefile
config.status:1172: creating libcryptopp.pc
config.status:1172: creating config.h
config.status:1401: executing depfiles commands
config.status:1401: executing libtool commands

有什么问题,我该如何解决?

EN

回答 1

Stack Overflow用户

发布于 2018-01-25 16:33:57

autoreconfconfigure运行之后,就会有一个config.h。问题是,它没有遵循模板config.h.in。它看起来像是由这些工具产生的新的config.h

在这一点上,看看你的config.h.in。我想你会很惊讶的。

问题是,在autoreconf为您运行的程序中,有一个是autoheader,它根据在configure.ac (或configure.in)中找到的内容构建config.h.in。然后,后续的configure使用新的模板,但是配置日志中并没有特别记录到这一点,因为模板在那时已经存在了。

这种行为通常是一种受欢迎的便利,但是如果您想提供您自己的定制config.h模板,则必须避免在运行autoreconf (或直接运行autoheader时)替换它。这样做的一种方法是完全避免运行这些程序。您可以运行其他自动工具程序,如果您决定避免使用autoreconf,那么编写脚本可能是值得的。

另一方面,Autoconf附带了一些内置的“行为”。特别是,AH_TOPAH_BOTTOM对于将自定义内容添加到自动生成的内容中可能很有用。

第三,如果您希望提供严格手工编写的自己的模板,并避免autoheader乱七八糟,那么了解autoheader只使用configure.ac中命名的第一个标头模板是有用的,并且可以指定多个标题模板。因此,您可以添加一个源没有引用的虚拟配置头,这样autoheader就可以在不破坏任何东西的情况下处理它:

代码语言:javascript
运行
复制
AC_CONFIG_HEADERS([config_dummy.h config.h])

Autotools将为其创建虚拟配置头和模板,但如果您的源从未引用过它,则对构建没有任何影响。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48436715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档