Организация тестового проекта и основного исполняемого файла - C & C ++ - PullRequest
4 голосов
/ 29 июня 2010

У меня следующая структура каталогов.

root
--src
---tests

src содержит исходные файлы и файлы заголовков (файлы C) для приложения.Когда это приложение создается, оно генерирует исполняемый файл.Каталог tests содержит примеры модульных тестов (файлы C ++, использующие UnitTest++ в качестве основы тестирования) для приложения.

В проект тестирования я могу включить файлы заголовков из каталога src, и компиляция пройдет.Проблемы возникают во время ссылки.Линкер не сможет найти объектные файлы в исходном каталоге.

Как я могу решить это?Какова обычная практика в проектах C & C ++, когда один исполняемый файл предназначен для основного приложения, а другой - для тестов, где для обоих требуются одинаковые исходные файлы для работы?

  • Тип приложения: кроссплатформенное.
  • Текущая разработка env: Linux
  • Инструмент сборки: CMake

Любая помощь будет полезна!

Ответы [ 2 ]

5 голосов
/ 29 июня 2010

Я всегда делал для этого три проекта. У меня была бы одна настройка сборки, которая собирает статическую библиотеку, содержащую большую часть моего кода. Затем у меня будет тестовый проект, который связывается со статической библиотекой, и проект, который содержит код пользовательского интерфейса и такой, который обычно не тестируется модулем.

Поскольку оба проекта используют одну и ту же скомпилированную статическую библиотеку, перекомпиляция файлов между проектами не требуется.

  • Примечание. Когда я говорю «проекты» выше, я имею в виду все, что имеет «проект» для вашей системы сборки. Для Visual Studio это будет proj-файл, для CMake - цель сборки.
2 голосов
/ 29 июня 2010

Я думаю, вам нужно либо скомпилировать эти файлы с вашим тестовым проектом, либо создать библиотеку в основном проекте, которую вы можете включить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...