如何在自动工具C++中添加提升单元测试框架

How to add boost unit test framework in autotools C++

本文关键字:添加 单元测试 框架 C++ 工具      更新时间:2023-10-16

我有一个C++项目,我正在尝试弄清楚如何让自动化工具在构建过程中动态包含-lboost_unit_test_framework标志。如果我添加它并使用它构建g++手动编译,则在使用自动工具设置生成文件时,它只是缺少标志。

此外,当运行./configure时,它会返回:
./configure: line 3113: AX_BOOST_UNIT_TEST_FRAMEWORK: command not found

我 configure.ac:

AC_PREREQ([2.69])
AC_INIT([project], [0.1.0], [example@example.com])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CXX
# Checks for libraries.
AX_BOOST_UNIT_TEST_FRAMEWORK
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile
src/Makefile
test/Makefile])
AC_OUTPUT

我想通了,除非您从自动会议存档下载宏,否则宏是未定义的。我把它放在我的项目中project/m4.

另外,您必须告诉configure.ac在哪里可以找到它们:

...
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4]) # << Add this line
# Checks for programs.
AC_PROG_CXX
...

更新:

一旦我开始工作,为了让make check执行测试,我必须:

  1. 将此添加到project/test/Makefile.am

    check_PROGRAMS = program_tests
    program_tests_CPPFLAGS = -I../src/ ${BOOST_CPPFLAGS}
    program_tests_LDFLAGS = ${BOOST_LDFLAGS}
    program_wallet_tests_LDADD = ${BOOST_UNIT_TEST_FRAMEWORK_LIB}
    program_wallet_tests_SOURCES = runner.cpp main_tests.cpp
    
  2. 将此行添加到主project/Makefile.amTESTS = test/program_tests