Также был поиск решения, возможно, будет легче поддерживать следующее:
Добавить новую конфигурацию сборки, например, «Отладка модульного тестирования», в проект DLL и изменить тип конфигурации на «Статическая библиотека»..lib "(" General "->" Тип конфигурации ").
Затем просто добавьте зависимость ваших модульных тестов от этого проекта, теперь все должно связываться вместе, когда вы используете новую конфигурацию сборки" Отладка юнит-тестирования ",Если вы используете сборки выпуска для модульных тестов, вам необходимо добавить еще одну конфигурацию с оптимизацией выпуска.
Итак, преимущества этого решения:
- низкая стоимость обслуживания
- один проект DLL / статическая библиотека
- не нужно вручную ссылаться на файлы .obj
Недостатки:
- Дополнительные профили конфигурации) потребует некоторых изменений в вашей среде сборки (CI)
- Увеличенное время компиляции
Обновление: в действительности мы использовали другой подход.
Мы добавили новые конфигурации «Test debug» / «Test release» для каждого имеющегося у нас проекта.
Для проектов .exe / .dll мы отключили исходный файл main.cpp от компиляции и заменили его на тот, которыйсоздает тестовую среду (например, gtest) и запускает все тесты, тесты находятся в отдельных файлах .cpp, которые также исключаются из компиляции в обычных конфигурациях (Release / Debug) и включены тольков тестовых конфигурациях.
Для проектов .lib у нас также есть новые конфигурации «Test debug» / «Test release», и мы преобразуем статическую библиотеку в файл .exe и предоставляем main.cpp, который создает экземпляр инфраструктуры тестирования и запускаеттесты и сами тесты.Связанные с тестом файлы исключаются из компиляции в конфигурациях выпуска / отладки.