Как создать модульный тест googletest, используя библиотеку gtest_main с Jam?
Я пытаюсь создать модульный тест googletest для проверки концепции в качестве новой среды модульного тестирования, которую мы могли бы использовать. В googletest есть два способа написания модульного теста: с основным или без основного. Если вы не определили main, вы можете сделать ссылку в библиотеке gtest_main, которая включает в себя функцию main(), экономя ваше время. В моей среде мы используем Jam для создания бинарных файлов. Я получил двоичный файл для компиляции с main() в моем коде и с помощью библиотеки libgtest, но я ищу, как собрать его в Jam без main.
Базовый случай (с функцией main()):
Я могу построить двоичный файл с этим:
Main MyUnitTestBinary : MyClass.cpp ;
LinkLibraries MyUnitTestBinary : libgtest ;
Library libgtest : $(GTEST_DIR)/src/gtest-all.cc ;
Разбитый регистр (без функции main()):
Я не могу построить двоичный файл с этим. Я вижу много ошибок при попытке связать объекты:
Main sample1_unittest : sample1.cc sample1_unittest.cc ;
LinkLibraries sample1_unittest : gtest_main ;
Library gtest_main : $(GTEST_DIR)/src/gtest_main.cc ;
Я получаю много ошибок компоновщика, связанных с неопределенной ссылкой на бла. Похоже, что неопределенная ссылка исходит из пространства имен testing::internal, которое не является частью моего кода.
Любые мысли о том, как я могу атаковать это, или искать больше подсказок по проблеме?
1 ответ
Я нашел ответ! Я неправильно не добавлял libgtest и gtest_main в двоичный файл. Я думал, что gtest_main также включает определения для фреймворка, и вам нужно было связать одно или другое. На самом деле вам всегда нужно связать libgtest, и вам нужно связать gtest_main, только если вы не хотите изменять стандартную функцию main().
Итак... правильный ответ - добавить:
LinkLibraries sample1_unittest : libgtest gtest_main ;
Library libgtest : $(GTEST_DIR)/src/gtest-all.cc ;