我有一个使用自动工具构建的 C++ 项目,以及用于单元测试的Catch2 。Catch2 的细节可能无关紧要:它只是我必须构建和运行的另一个程序。
我已经这样Makefile.am
设置(简化):
AUTOMAKE_OPTIONS = subdir-objects
check_PROGRAMS = catch2
bin_PROGRAMS = lpsdr
common_sources = applicationcontroller.cc flowgraph.cc [...]
lpsdr_SOURCES = $(common_sources) main.cc
catch2_SOURCES = $(common_sources) test.cc
这主要工作,除了它编译所有东西两次lpsdr-applicationcontroller.o
,catch2-applicationcontroller.o
为common_sources
.
当然,这会使构建时间加倍。我更喜欢将两者链接catch2
并lpsdr
使用相同的目标文件:构建速度会更快,并确保我正在测试与正在运行的完全相同的编译代码。
有没有办法解决这种行为?