我有一个项目,其中有几个帮助脚本使用不同的命令行选项调用主可执行文件。现在,脚本假定可执行文件位于同一目录中,因此脚本中对可执行文件的调用看起来像./my_program
. 然而,这不是很灵活。如果程序安装在/usr/bin
目录中,而不是在当前目录中怎么办?
有没有办法使用 automake 或 autoconf 来生成这些脚本,并将对可执行文件的调用替换为./my_program
or 或 just my_program
,具体取决于可执行文件是否已安装?
我有一个项目,其中有几个帮助脚本使用不同的命令行选项调用主可执行文件。现在,脚本假定可执行文件位于同一目录中,因此脚本中对可执行文件的调用看起来像./my_program
. 然而,这不是很灵活。如果程序安装在/usr/bin
目录中,而不是在当前目录中怎么办?
有没有办法使用 automake 或 autoconf 来生成这些脚本,并将对可执行文件的调用替换为./my_program
or 或 just my_program
,具体取决于可执行文件是否已安装?
当然。IMO 使用自动工具最简单的解决方案是:
在找到程序路径的文件夹下创建新的m4宏m4/
,并将其设置为变量。
例如,您创建了一个宏:
MY_PROGRAM_PATH_CHECK([action-if-found], [action-if-not-found])
MY_PROGRAM_PATH
如果找到路径,此宏将创建变量。
配置.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