AC_PATH_PROG始终返回/ usr / bin / prog而不是/ my / own / path / prog

时间:2018-10-31 17:43:59

标签: autotools automake

我的configure.ac文件正在检查在不同系统中可能具有一个或多个位置的Rscript程序。

AC_PATH_PROG([RSCRIPT], [Rscript], [na])

RSCRIPT设置为/ usr / local / bin / Rscript,与返回的值相同

which Rscript
/usr/local/bin/Rscript

在我的一台计算机上。在另一台计算机上,Rscript停留在两个位置

/usr/bin/Rscript  # this one is older
which Rscript
/global/software/bin/Rscript # this one is what I wanted

PATH=/global/software/bin:/usr/bin:muchlonger/notshown

我的PATH变量在/ usr / bin之前具有/ global / software / bin。根据该文档,AC_PATH_PROG应该返回/ global而不是/ usr / bin。不确定如何避免此问题。

一个技巧是在configure之外设置RSCRIPT变量。我目前正在使用这种方法。

已更新:

I constructed a minimal configure.ac file
AC_PREREQ([2.69])
AC_INIT([minimaltest], [1.0.0], [blabal@yahoo.com])
AM_INIT_AUTOMAKE([-Wall -Wportability])
AC_CONFIG_SRCDIR([src/helloworld.cpp])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])

# Checks for programs.
AC_PROG_CXX
AC_PATH_PROG([RSCRIPT], [Rscript], [na])
if test "$RSCRIPT" = na; then
   AC_MSG_ERROR([Rscript binary not found on this machine!])
else
   AC_MSG_RESULT([Rscrpt path: $RSCRIPT])
fi


# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

然后在“可疑”系统上运行configure并获得预期的行为。这是configure输出的一部分:

checking dependency style of g++... gcc3
checking for Rscript... /global/software/r/3.5.0/bin/Rscript
Rscrpt path: /global/software/r/3.5.0/bin/Rscript
checking that generated files are newer than configure... done

因此,我的原始configure.ac肯定有问题。我会弄清楚。感谢约翰指出这一点。最小的configure.ac文件是调试的一个好主意。

0 个答案:

没有答案