Unity Testing с PlatformIO в собственной среде - нет библиотек avr-g cc - PullRequest
0 голосов
/ 24 апреля 2020

Руководство от PlatformIO (я использую VS Code) для модульного тестирования кажется достаточно справедливым. Однако, когда PlatformIO пытается собрать для модульных тестов на моем локальном компьютере (среда native), мои файлы не будут компилироваться. Ошибка гласит, что avr/io.h не существует. Эти же файлы прекрасно компилируются для моей другой среды (платформа atmelavr, framework arduino).

Полагаю, это связано с использованием G CC вместо AVR-G CC (WinAVR ).

Кто-нибудь получил модульное тестирование для работы над VS Code с PlatformIO, используя собственную среду? Как установить дополнительные пути включения для определенной платформы, таким образом предоставляя G CC недостающий материал?

Я попытался добавить путь с

lib_extra_dirs = "C:\Users\MYUSER\.arduinocdt\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5\avr\include"

с и без трейлинга \, но, похоже, не работает.


(частично) Дерево каталогов

...\RGBPlay:.
│   platformio.ini
│
├───include
│       tTimer0.h
|
├───src
│       main.cpp
│       tTimer0.cpp
│
└───test
    └───test_tTimer
            test_tTimer_construct.cpp

platformio.ini

[env:ArduinoAsISP]
platform = atmelavr
framework = arduino
board = attiny85
upload_protocol = stk500v1
upload_flags = 
    -P$UPLOAD_PORT
    -b$UPLOAD_SPEED
upload_port = COM3
upload_speed = 19200

[env:native]
platform = native
lib_extra_dirs = "C:\Users\MYUSER\.arduinocdt\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino5\avr\include"

В последней строке я попытаюсь позволить компилятору G CC достичь io.h (который находится в папке ...\avr\include\avr).


src / main. cpp

1   #include <avr/io.h>
2   ...

Сообщение об ошибке

Actual error message, the part discussed here is marked with green.

1 Ответ

1 голос
/ 03 мая 2020

Из документации PlatformIO:

Рабочий стол

Модуль модульного тестирования PIO создает тестовую программу для хост-машины с использованием платформы собственной разработки. Этот тест можно запустить только с настольным компьютером или экземпляром Continuous Integration VM.

Примечание

PlatformIO не устанавливает автоматически никаких наборов инструментов для Native и требует, чтобы набор инструментов G CC был установлен на вашем хосте машина. Пожалуйста, откройте терминал и убедитесь, что установлена ​​команда g cc.

Вывод: он использует хосты g cc. Для хост-системы не будет avr / io.h, так как он не работает на AVR MCU.

Это также означает, что вы можете тестировать только независимые от платформы части в хост-системе, такие как алгоритмы (разделенные в библиотеках, поэтому она не зависит от библиотек / библиотек avr и может независимо включаться в модульные тесты ).

...