У меня есть проект C ++, использующий для сборки autotools, и 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
с одними и теми же объектными файлами: сборка будет быстрее, а также я буду проверять точно такой же скомпилированный код, как и на моем. Есть ли способ обойти это поведение?