Установив одинаковые флаги компиляции для обоих проектов и сделав промежуточные компоненты проекта A предпосылками проекта B, вы удалите все степени свободы из B. Невозможной возможности компилировать B отдельно, и ваша ссылка предполагает, что B не имеетraison d'etre, кроме тестирования A. Самым простым и чистым решением было бы объединить тесты из B в A и сделать все это одним проектом (который, честно говоря).
На языке Automake выобъявляю модульные тесты в B как check_PROGRAMS, и они будут скомпилированы только для проверки вашей программы.Я не эксперт по Visual-C ++, но это чистое решение, и оно должно как-то быть выполнимо с VC ++.
Приложение: Чтобы прояснить язык automake, проект, например, будет выглядеть так:
noinst_LTLIBRARIES = libthings-to-test.la libthings-not-tested.la
bin_PROGRAMS = production
check_PROGRAMS = unit_test_a
production_SOURCES = main.cpp
production_LDADD = libthings-to-test.la libthings-not-tested.la
unit_test_a_SOURCES = test.cpp
unit_test_a_LDADD = libthings-to-test.la
libthings_to_test_la_SOURCES = foo.cpp bar.cpp baz.cpp
со всей базой кода (рабочий код, общие библиотеки, тесты) в одном проекте, то есть с одним модулем, который полностью сконфигурирован и распространяется и к которому прикреплен единственный номер версии.При установке конечным пользователем / дистрибьютором будет связана одна программа production.exe
.При компиляции с make all
вспомогательные библиотеки и необходимые объекты будут скомпилированы в каталоге компоновки, а когда вызывается make check
, компилируются только объекты, необходимые для модульных тестов, производственный код, связанный и тесты запускаются.Опять же, извините, я не могу перевести это на Microsoft Speak.