我正在更新項目以使用自動工具,併爲了保持與以前版本的向後兼容性,我希望用戶能夠運行./configure --foo=bar
來設置構建選項。創建自定義./configure命令行參數
基於閱讀文檔,它看起來像我就可以建立./configure --enable-foo
,./configure --with-foo
,或./configure foo=bar
沒有任何問題,但我沒有看到任何東西使所期望的行爲(特別是具有選擇權前雙破折號--
)。
有什麼建議嗎?
我正在更新項目以使用自動工具,併爲了保持與以前版本的向後兼容性,我希望用戶能夠運行./configure --foo=bar
來設置構建選項。創建自定義./configure命令行參數
基於閱讀文檔,它看起來像我就可以建立./configure --enable-foo
,./configure --with-foo
,或./configure foo=bar
沒有任何問題,但我沒有看到任何東西使所期望的行爲(特別是具有選擇權前雙破折號--
)。
有什麼建議嗎?
有沒有辦法,我知道configure.ac
這樣做的。您必須修補configure
。這可以通過在運行autoreconf
之後在bootstrap.sh
中運行修補腳本來完成。您必須將您的選項添加到ac_option
處理循環中。對於--x
的情況下看起來像一個有前途的一個複製或更換注入新的選項,類似:
--foo=*)
my_foo=$ac_optarg ;;
還有一些剔除了命令行ARGS時configure
有時需要重新調用代碼。確定是否應剝離--foo
將由您決定。我想這可能是他們爲什麼不首先考慮這個問題的原因。
如果是我,我會嘗試和遊說AC_ARG_WITH
(例如--with-foo=bar
)。這似乎少了很多工作。
爲了做到這一點,你必須添加到您的configure.ac是這樣的:
# Enable debugging mode
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],[Show a lot of extra information when running]),
AM_CPPFLAGS="$AM_CPPFLAGS -DDEBUG"
debug_messages=yes,
debug_messages=no)
AC_SUBST(AM_CPPFLAGS)
AC_SUBST(AM_CXXFLAGS)
echo -e "\n--------- build environment -----------
Debug Mode : $debug_messages"
這只是一個簡單的例子來添加例如--enable-調試,它將設置在config.h文件上調試常量。 那麼你必須代碼是這樣的:
#include "config.h"
#ifdef DEBUG
// do debug
#else
// no debug
#endif
是的,我讀了關於AC_ARG_ENABLE和AC_ARG_WITH。但是,這不是我要找的。我不想選擇以''enable''或''with''開始,我希望用戶能夠傳遞任意字符串。 – profzoom 2014-12-11 05:52:25
那麼你該如何創建自定義條目? – 2014-12-11 05:58:15
謝謝!我繼續前進,只是使用了AC_ARG_WITH。 – profzoom 2014-12-12 17:14:06