防止"#define PACKAGE_VERSION"出现在 config.h 中



我的中型自动工具项目的软件包版本(请参阅AC_INIT(经常更改。当包装版本更改时,我会遭受整个项目的不必要重建,因为PACKAGE_VERSIONconfig.h中的朋友已经更改,并且config.h都包含在所有源文件中。

实际上仅在一个源文件中需要该版本,我想将这些定义放在单独的生成的标题中,并将其包含在此源文件中。

在属于AutoConf的文件general.m4中,我看到以下内容:

m4_define([_AC_INIT_PREPARE],
...
AC_DEFINE_UNQUOTED([PACKAGE_VERSION], ["$PACKAGE_VERSION"],
           [Define to the version of this package.])dnl
AC_DEFINE_UNQUOTED([PACKAGE_STRING], ["$PACKAGE_STRING"],
           [Define to the full name and version of this package.])dnl

在属于汽车的文件init.m4中:

AC_DEFUN([AM_INIT_AUTOMAKE],
...
 AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl

我想撤消这三个效果。目前,我的configure.ac有这些行:

AC_INIT(pkgname, [1.2.3])
AC_CONFIG_HEADERS(config.h)
AM_INIT_AUTOMAKE([1.11 parallel-tests -Wno-portability tar-ustar])

您可以通过在AM_INIT_AUTOMAKE中的Automake选项中指定no-define来防止这些符号的某些某些,但这并不能完全解决您的问题,因为PACKAGE_VERSION本身会不受影响。它是由AC_INIT定义的,据我所知,AutoConf没有提供抑制它的机制。

假设您不想调整版本练习(奇怪的是,您的版本编号如此频繁地变化以至于这是一个问题(,并且您拒绝这样的观念,即执行执行一个合理的政策每当发生版本编号更改时,清洁构建,我最好的建议是在(重新(生成后修补configure脚本。您需要弄清楚需要进行哪些更改,但是一旦这样做,我希望您能够在需要时编写一个很小的sed-或基于awk的脚本。

相关内容

  • 没有找到相关文章

最新更新