代码之家  ›  专栏  ›  技术社区  ›  Michael Ulm

C++中单元测试的MaFe文件

  •  5
  • Michael Ulm  · 技术社区  · 14 年前

    我正在努力编写能够正确构建单元测试的makefile。例如,假设文件结构如下所示

    src/foo.cpp
    src/foo.hpp
    src/main.cpp
    tests/test_foo.cpp
    tests/test_all.cpp
    

    所以,要构建可执行的test\u all,我需要构建test\u foo.o,而test\u foo.o又依赖于test_foo.cpp文件但也在src/foo.o上。

    这种情况下的最佳做法是什么?父文件夹中有一个Makefile?每个文件夹一个Makefile?如果是,如何管理文件夹之间的依赖关系?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Vijay Mathew Chor-ming Lung    14 年前

    通常的做法是每个文件夹有一个Makefile。这里有一个简单的例子 生成文件.am 根文件夹的脚本:

    #SUBDIRS = src tests
    all:
        make -C ./src
        make -C ./tests    
    install:
        make -C ./src install
    uninstall:
        make -C ./src uninstall
    clean:
        make -C ./src clean
    test:
        make -C ./tests test
    

    相应的 对于 src公司

    AM_CPPFLAGS = -I./
    
    bin_PROGRAMS = progName
    
    progName_SOURCES = foo.cpp main.cpp
    LDADD = lib-to-link
    
    progName_LDADD = ../libs/
    

    对于 看起来很像:

    AM_CPPFLAGS = -I../src
    
    bin_PROGRAMS = tests
    
    tests_SOURCES = test_foo.cpp test_all.cpp
    

    使用automake生成 生成文件.in 来自.am文件的文件。这个 脚本将使用.in文件生成makefile。(对于小型项目,您希望直接手工编写makefile)。

        2
  •  5
  •   dave    14 年前

    http://miller.emu.id.au/pmiller/books/rmch/ ). 现在我推荐一个Makefile。还可以查看自动依赖项生成—现在您甚至不需要计算测试依赖于什么。你只需要一些目标。