我的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文件是调试的一个好主意。