一種用於基於autotools的項目,我現在在我的Makefile.am
以下行:如何有條件地定義AUTOMAKE_OPTIONS?
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
時間執行。即使它有效,我也會發現它可笑地臃腫和臃腫;有沒有更好的辦法?我的直覺告訴我,我應該用我的configure.ac
設置一個變量,那麼我就要乾脆讓擴大在Makefile.am
,就像這樣:
AUTOMAKE_OPTIONS = $(SERIAL_TESTS)
背後自動配置的理念是要檢查的功能 - 可我以某種方式跳過版本檢查,並檢查串行測試選項的可用性,並使用它,如果給出?
這是沒有意義的做到這一點;只需要automake 1.13。唯一應該在你的項目中使用automake的人是維護者。 – 2013-04-04 20:22:36
這是需要支持的(多個)維護者。 – Irfy 2013-04-04 20:25:06
如果您的維護人員無法安裝並運行正確版本的automake,那麼您可能應該重新考慮該人員對該項目的立場! – 2013-04-04 20:27:55