在一个基于 autotools 的项目中,我目前在我的 中有以下行Makefile.am
:
AUTOMAKE_OPTIONS = serial-tests
当且仅当我的 automake 版本为 1.12 或更高版本时,我想让此选项适用。原因是需要同时支持 1.11 和 1.13 automake 的串行测试工具。做这个的最好方式是什么?
我已经尝试过这个:
AM_VER = $(shell $(AUTOMAKE) --version | head -n1 | sed -e 's|[^0-9.]||g')
AM_VER_MAJOR = $(shell echo $(AM_VER) | cut -d. -f1)
AM_VER_MINOR = $(shell echo $(AM_VER) | cut -d. -f2)
AM_VER_PATCH = $(shell echo $(AM_VER) | cut -d. -f3)
$(info $(AM_VER_MAJOR) $(AM_VER_MINOR) $(AM_VER_PATCH))
supports_serial_tests_opt = $(shell if [ "$(AM_VER_MAJOR)" -gt 1 ] || { [ "$(AM_VER_MAJOR)" -eq 1 ] && [ "$(AM_VER_MINOR)" -ge 12 ]; }; then echo true; fi)
$(info $(supports_serial_tests_opt))
$(if $(supports_serial_tests_opt), $(eval AUTOMAKE_OPTIONS=serial-opts))
$(info $(AUTOMAKE_OPTIONS))
而且它不起作用,因为AUTOMAKE_OPTIONS
需要在automake
执行时设置,并且函数条件是在make
时间执行的。即使它有效,我也会觉得它冗长而臃肿。有没有更好的办法?我的直觉告诉我应该使用 myconfigure.ac
来设置一个变量,然后我将简单地在 中展开Makefile.am
,如下所示:
AUTOMAKE_OPTIONS = $(SERIAL_TESTS)
自动配置背后的理念是检查功能——我可以以某种方式跳过版本检查并检查串行测试选项的可用性并在给定的情况下使用它吗?