我有一个项目,其中有几个帮助程序脚本使用不同的命令行选项调用主可执行文件。现在,脚本假定可执行文件位于同一目录中,因此脚本中对可执行文件的调用看起来像./my_program
。然而,这不是很灵活。如果程序安装在/usr/bin
目录中,并且不在当前目录中,该怎么办?
有没有办法,使用automake或autoconf来生成这些脚本,并使用./my_program
或my_program
替换对可执行文件的调用,具体取决于是否已安装可执行文件?
答案 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