2012-07-09 61 views
0

我有一個項目,其中有幾個助手腳本使用不同的命令行選項調用主可執行文件。目前,腳本假定可執行文件位於同一目錄中,因此腳本中對可執行文件的調用看起來像./my_program。但是,這不是很靈活。如果程序安裝在/usr/bin目錄中,並且不在當前目錄中,該怎麼辦?腳本中的autoconf替代路徑

有沒有辦法使用automake或autoconf來生成這些腳本,並根據是否已安裝可執行文件,將調用替換爲./my_programmy_program,這取決於是否已安裝可執行文件?

回答

2

當然。 IMO與自動工具最簡單的解決辦法是:

  • 是找到你的程序的路徑,並將其設置爲可變m4/文件夾下創建新M4宏。

    例如,您創建了一個宏:

    MY_PROGRAM_PATH_CHECK([action-if-found], [action-if-not-found]) 
    

    此宏創建MY_PROGRAM_PATH變量,如果路徑中找到。

    configure.ac

    MY_PROGRAM_PATH_CHECK(,[AC_MSG_ERROR([my_program path not found, woot?]) 
    AC_SUBST(MY_PROGRAM_PATH) 
    
    AC_CONFIG_FILES([src/script1.sh], [chmod +x src/script1.sh]) 
    AC_CONFIG_FILES([src/script2.sh], [chmod +x src/script2.sh]) 
    
  • 轉換你的腳本。在文件,因此替代會發生:

    的src/Makefile.am

    bin_SCRIPTS = script1.sh script2.sh 
    

    src/script 1.sh

    @[email protected]/my_program --option1 
    

    SRC/script2.sh

    @[email protected]/my_program --option2