防止“#define PACKAGE_VERSION”出现在 config.h 中
Prevent "#define PACKAGE_VERSION" from appearing in config.h
我的 medium-sized autotools 项目的包版本(参见 AC_INIT
)经常更改。当包版本更改时,我会遭受整个项目不必要的重建,因为 PACKAGE_VERSION
和 config.h
中的朋友已经更改并且 config.h
包含在所有源文件中。
版本实际上只需要一个源文件,我想将这些定义放在一个单独生成的 header 中,并将其包含在这个源文件中。
在属于 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
在属于 automake 的文件 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
本身不会受到影响。 It is defined by AC_INIT
,据我所知,Autoconf 没有提供抑制它的机制。
然后,假设您不想调整您的版本控制实践(您的版本号变化如此频繁以至于这是一个问题,这很奇怪),并且您拒绝接受这样的观点,即这是一个合理的策略每当版本号发生变化时执行干净的构建,我最好的建议是在(重新)生成它之后修补 configure
脚本。您需要弄清楚需要进行哪些更改,但一旦完成,我希望您能够编写一个基于 sed
或 awk
的小型脚本,以便在需要时执行此操作.
我的 medium-sized autotools 项目的包版本(参见 AC_INIT
)经常更改。当包版本更改时,我会遭受整个项目不必要的重建,因为 PACKAGE_VERSION
和 config.h
中的朋友已经更改并且 config.h
包含在所有源文件中。
版本实际上只需要一个源文件,我想将这些定义放在一个单独生成的 header 中,并将其包含在这个源文件中。
在属于 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
在属于 automake 的文件 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
本身不会受到影响。 It is defined by AC_INIT
,据我所知,Autoconf 没有提供抑制它的机制。
然后,假设您不想调整您的版本控制实践(您的版本号变化如此频繁以至于这是一个问题,这很奇怪),并且您拒绝接受这样的观点,即这是一个合理的策略每当版本号发生变化时执行干净的构建,我最好的建议是在(重新)生成它之后修补 configure
脚本。您需要弄清楚需要进行哪些更改,但一旦完成,我希望您能够编写一个基于 sed
或 awk
的小型脚本,以便在需要时执行此操作.