脚本中的autoconf替换路径

时间:2012-07-09 19:26:49

标签: autoconf automake substitution

我有一个项目,其中有几个帮助程序脚本使用不同的命令行选项调用主可执行文件。现在,脚本假定可执行文件位于同一目录中,因此脚本中对可执行文件的调用看起来像./my_program。然而,这不是很灵活。如果程序安装在/usr/bin目录中,并且不在当前目录中,该怎么办?

有没有办法,使用automake或autoconf来生成这些脚本,并使用./my_programmy_program替换对可执行文件的调用,具体取决于是否已安装可执行文件?

1 个答案:

答案 0 :(得分:2)

不确定。 IMO使用 autotools 的最简单的解决方案是:

  • 在找到程序路径的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])
    
  • 将您的脚本转换为 .in 文件,因此会进行替换:

    的src / Makefile.am

    bin_SCRIPTS = script1.sh script2.sh
    

    的src / script1.sh

    @MY_PROGRAM_PATH@/my_program --option1
    

    的src / script2.sh

    @MY_PROGRAM_PATH@/my_program --option2