Mic*_*Ulm 6 c++ unit-testing makefile
我正在努力编写正确构建单元测试的Makefile.例如,假设文件结构如下所示
src/foo.cpp
src/foo.hpp
src/main.cpp
tests/test_foo.cpp
tests/test_all.cpp
Run Code Online (Sandbox Code Playgroud)
因此,要构建可执行文件test_all,我需要构建test_foo.o,而test_foo.o依赖于test_foo.cpp,但也依赖于src/foo.o.
在这种情况下,最佳做法是什么?父文件夹中有一个Makefile?每个文件夹一个Makefile?如果是这样,我如何管理文件夹之间的依赖关系?
常见的做法是每个文件夹都有一个 Makefile。这是根文件夹的简单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
Run Code Online (Sandbox Code Playgroud)
src文件夹对应的Makefile.am如下所示:
AM_CPPFLAGS = -I./
bin_PROGRAMS = progName
progName_SOURCES = foo.cpp main.cpp
LDADD = lib-to-link
progName_LDADD = ../libs/
Run Code Online (Sandbox Code Playgroud)
用于测试的Makefile.am看起来类似:
AM_CPPFLAGS = -I../src
bin_PROGRAMS = tests
tests_SOURCES = test_foo.cpp test_all.cpp
Run Code Online (Sandbox Code Playgroud)
使用 automake从 .am 文件生成Makefile.in文件。配置脚本将使用 .in 文件来生成 Makefile。(对于小型项目,您希望直接手动编写 Makefile)。
通常的做法是每个目录的Makefile.这就是我在阅读"Recursive Make Considered Harmfull"之前所建议的内容(http://miller.emu.id.au/pmiller/books/rmch/).现在我推荐一个Makefile.还可以查看自动依赖关系生成 - 现在您甚至不需要计算出测试所依赖的内容.你需要的只是一些目标.
| 归档时间: |
|
| 查看次数: |
11356 次 |
| 最近记录: |