Как исправить "неопределенную ссылку на:" в arduino ide, пытаясь использовать googletest - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь использовать библиотеку googletest для тестирования кода в arduino ide и продолжаю получать ошибки, такие как

В функции __static_initialization_and_destruction_0 'неопределенная ссылка на `std :: ios_base :: Init:: Init () '

Есть еще 50 строк этой ошибки, включая

неопределенная ссылка на тестирование :: Test :: SetUp ()' неопределенная ссылка наtesting :: Test :: TearDown ()

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

В настоящее время я включаю только gtest/gtest.h, поскольку это все, что я видел в других примерах для того, чтобы код работал.

Я создал библиотеку googletest, используя cmakeи сделать, и включить его в проект.

Кто-нибудь имеет представление о том, что я могу сделать, чтобы это исправить?

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Вы не можете скомпилировать googletest в Arduino IDE.В первую очередь потому, что компилятор, используемый в Arduino IDE, предназначен для генерации (для обычных arduinos) AVR двоичных файлов, а не x86 / x86-64.Эти AVR двоичные файлы не могут быть запущены на обычном ПК и предназначены только для встроенной платформы.Поскольку на встроенной платформе обычные стандартные потоки ввода-вывода текста недоступны, arduino IDE не включает стандартный ввод-вывод, используемый на обычных ПК для использования в терминалах.(aka pipe 0 1 2 в unix).

Я создал библиотеку googletest, используя cmake и make, и включил ее в проект.

Это правильно, чтоэто не сработает.Если вы компилируете googletest с помощью cmake / make, вы, вероятно, создаете бинарный файл x86 или x86-64, который затем включаете в IDE Arduino.Затем IDE-компилятор arduino попытается связать двоичный файл AVR с библиотекой x86 / x86-64.Это не сработает.

Я бы порекомендовал вам разработать программное обеспечение таким образом, чтобы аппаратно-зависимая логика была удалена из вашей бизнес-логики, если вы хотите протестировать свой код Arduino с помощью googletest.Затем бизнес-логику можно протестировать модулем, скомпилировав ('обычный') двоичный файл x86 или x86-64 с тестовым кодом, который можно запустить на обычном ПК.Это будет включать в себя макет аппаратных интерфейсов, используемых в вашем коде.Эта инфраструктура сборки может быть легко настроена внутри той же структуры вашего проекта Arduino, и тестирование будет включать в себя только создание тестового двоичного файла и его запуск.

0 голосов
/ 18 июня 2019

Тест Google использовался на различных платформах:

  • Linux
  • Mac OS X
  • Windows
  • Cygwin
  • MinGW
  • Windows Mobile
  • Symbian
  • PlatformIO

Нет Arduino, нет Микроконтроллер

...