2014-12-11 85 views
0

我正在更新項目以使用自動工具,併爲了保持與以前版本的向後兼容性,我希望用戶能夠運行./configure --foo=bar來設置構建選項。創建自定義./configure命令行參數

基於閱讀文檔,它看起來像我就可以建立./configure --enable-foo./configure --with-foo,或./configure foo=bar沒有任何問題,但我沒有看到任何東西使所期望的行爲(特別是具有選擇權前雙破折號--)。

有什麼建議嗎?

回答

2

有沒有辦法,我知道configure.ac這樣做的。您必須修補configure。這可以通過在運行autoreconf之後在bootstrap.sh中運行修補腳本來完成。您必須將您的選項添加到ac_option處理循環中。對於--x的情況下看起來像一個有前途的一個複製或更換注入新的選項,類似:

--foo=*) 
     my_foo=$ac_optarg ;; 

還有一些剔除了命令行ARGS時configure有時需要重新調用代碼。確定是否應剝離--foo將由您決定。我想這可能是他們爲什麼不首先考慮這個問題的原因。

如果是我,我會嘗試和遊說AC_ARG_WITH(例如--with-foo=bar)。這似乎少了很多工作。

+0

謝謝!我繼續前進,只是使用了AC_ARG_WITH。 – profzoom 2014-12-12 17:14:06

-1

爲了做到這一點,你必須添加到您的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 
+0

是的,我讀了關於AC_ARG_ENABLE和AC_ARG_WITH。但是,這不是我要找的。我不想選擇以''enable''或''with''開始,我希望用戶能夠傳遞任意字符串。 – profzoom 2014-12-11 05:52:25

+0

那麼你該如何創建自定義條目? – 2014-12-11 05:58:15