c++autoconfautomakecxxtest

How do I write an automake file for CxxTest?


The CxxTest documentation has an example of a Makefile that generates and runs unit tests. How do I do the same for automake (Makefile.am)?


Solution

  • I did this by creating this Makefile.am in a tests directory, where all the test code was:

    check_PROGRAMS = tests
    
    EXTRA_tests_SOURCES  = test_example1.hpp
    EXTRA_tests_SOURCES += test_example2.hpp
    
    tests_SOURCES = runner-autogen.cpp
    
    BUILT_SOURCES = runner-autogen.cpp
    MAINTAINERCLEANFILES = runner-autogen.cpp
    
    runner-autogen.cpp: $(EXTRA_tests_SOURCES)
        /path/to/cxxtest/bin/cxxtestgen --runner=ErrorPrinter -o $@ $<
    

    What this does is compile runner-autogen.cpp into the test program (called tests) and runs it with make check. If any of the listed .hpp files change, it will run cxxtestgen to recreate runner-autogen.cpp.

    Because runner-autogen.cpp is listed as a source file, it will be included in the release archive by make dist, so the user won't need cxxtest present unless they modify one of the .hpp files.