意外标记“AX_VALGRIND_CHECK”附近的语法错误

syntax error near unexpected token `AX_VALGRIND_CHECK'

我正在尝试使用 https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html 中描述的以下 m4 宏将 valgrind 集成到我的单元测试框架中。在我的 configure.ac 我有

AC_CONFIG_MACRO_DIR([m4])
...
AX_VALGRIND_DFLT()
AX_VALGRIND_CHECK

我已将提供的 .m4 script 放在 ./m4 和 /usr/share/aclocal 中。要生成配置脚本等,我 运行 以下内容:

aclocal && autoconf && autoreconf --no-recursive --install && \
autoheader && libtoolize --force && automake --force-missing \
--add-missing

然而,当我执行 运行 ./configure 时,出现以下错误

./configure: line 12914: syntax error near unexpected token `AX_VALGRIND_CHECK'
./configure: line 12914: `AX_VALGRIND_CHECK'

我需要做什么才能让我的配置脚本与上面 .m4 script 提供的宏一起工作。我不确定要提供什么其他信息。


下面是我的configure.ac。我将尝试找出使用此 configure.ac 与 @Kusalananda 发布的 autoreconf -i 生成的问题在哪一点中断。

AC_INIT([binary_balanced], [0.1], [mehoggan@gmail.com])                        
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])                       
AC_CONFIG_SRCDIR([./src/])                                                     
AC_CONFIG_HEADERS([config.h])                                                  
AC_CONFIG_MACRO_DIR([m4])                                                      
AC_PROG_CC                                                                     
AM_PROG_AR                                                                     
AM_PATH_CHECK                                                                  

LT_INIT                                                                        

# Checks for programs.                                                         
AC_PROG_CC                                                                     

# Checks for libraries.                                                        
AX_VALGRIND_DFLT()                                                             
AX_VALGRIND_CHECK                                                              

# Checks for header files.                                                     

# Checks for typedefs, structures, and compiler characteristics.               

# Checks for library functions.                                                

AC_CONFIG_FILES([Makefile                                                      
                 src/Makefile                                                  
                 tests/Makefile])                                              
AC_OUTPUT 

我无法重现你的问题。

我也很少 运行 除了 autoreconf -i 之外的任何东西。这将根据需要重新运行 其他自动工具。

我将 ax_valgrind_check.m4 放入 ./m4 目录并创建了一个存根 configure.ac:

AC_PREREQ([2.69])
AC_INIT([test],[0.0.0-dev])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_MACRO_DIR([m4])
AX_VALGRIND_DFLT()
AX_VALGRIND_CHECK

运行 autoreconf -i 创建一个执行以下操作的 configure 脚本:

$ ./configure
checking for a BSD-compatible install... /Users/kk/sw/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /Users/kk/sw/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for valgrind... no

所以宏被拾取了(它们不是你的情况)。

所以,运行 autoreconf -i 看看这是否适合您。

如果你不能让它工作,请尝试为你正在使用的任何 Unix 安装 autoconf-archive 包。它还将包含此宏。