Прежде всего у вас должен быть выделенный файл main.cpp
для функции main()
, который не содержит ничего другого.
Например, структура вашего проекта может выглядеть следующим образом:
- project1
file1.h
file1.cpp
main.cpp
Я не знаком с Gtest в частности, но обычно для модульных тестовых сред имеется отдельный файл для основной функции gtest, например, gtest_main.cpp
. Тесты находятся в одном или нескольких файлах, таких как file1test.cpp
et c.
. Таким образом, вы должны скомпилировать и связать свой проект1 с file1.h
, file1.cpp
и main.cpp
, чтобы получить исполняемый файл.
Для модульных тестов вы должны скомпилировать и связать file1.h
, file1.cpp
, file1test.cpp
и gtest_main.cpp
для исполняемого файла модульного теста.
Структура может иметь вид
- project1
file1.h
file1.cpp
main.cpp
- project1test
file1test.cpp
gtest_main.cpp
РЕДАКТИРОВАТЬ дополнительная информация о связывании:
В проекте project1test вы включите file1.h
с #include "../project1/file1.h"
.
Для правильного связывания щелкните правой кнопкой мыши на project1test
project
-> Свойства конфигурации -> Линкер -> Ввод -> Дополнительные зависимости -> Добавить ".. \ project1 \ Debug \ file1.obj"
Как заметил @Alan Birtles, было бы еще яснее, если бы вы имели следующую структуру:
- project1library
- project1application
- project1test
file1test.cpp
gtest_main.cpp
Вы получите статическую / динамическую c библиотеку project1library.lib/.dll
, исполняемый файл project1application.exe
и исполняемый модуль модульного теста project1test.exe
.
Преимущество заключается в том, что вы просто связали бы библиотеку в своем проекте модульного тестирования с
-> Свойства конфигурации -> Линкер -> Ввод -> Дополнительные зависимости -> Добавить ".. \ project1library \ Debug \ project1library.lib"
Если у вас есть более одного файла из вашего проекта, вам не нужно добавлять каждый файл obj, но только один файл lib.
Но убедиться, что все правильно перестроено при изменениях, может быть сложнее и подвержено ошибкам с помощью библиотеки lib, исполняемого файла и проекта модульного тестирования.