Использование файлов заголовков из вложенной папки

#arduino #include #arduino-ide

#arduino #включить #arduino-ide

Вопрос:

У Arduino IDE возникли проблемы с включением моих файлов заголовков, и я не совсем уверен, почему.

Вот структура моего проекта:

 project/
 ├ project.ino
 ├ README.md
 └ src/
    └ foo.h
  

Тогда в моем project.ino файле есть следующее:

 #include "src/foo.h"

void init() {
    // init stuff
}

void loop() {
    // loop stuff
}
  

Когда я затем пытаюсь скомпилировать, я получаю следующую ошибку:

 fatal error: src/foo.h: No such file or directory
  

Действительно ли мне нужно, чтобы все файлы моего проекта находились в одной папке?

Я не хочу помещать файлы в library/ поскольку предполагается, что весь проект будет извлечен из GitHub, поэтому удобнее хранить его в одной корневой папке.

Что я здесь делаю не так, почему он не может найти мой файл?

PS: запись #include "./src/foo.h" ничего не делает, чтобы исправить это

Ответ №1:

Если вы используете Windows, это должно быть похоже

 include "srcfoo.h"
  

Для Windows вы должны использовать косую черту, тогда как фоновая косая черта для систем на базе Unix (Mac / Linux)

Комментарии:

1. Я не пользуюсь Windows

Ответ №2:

Если вы используете Windows, используйте

#include ".\src\foo.h"

для Linux и macOS используйте

 #include ".//src//foo.h"
  

Причина странного поведения Arduino заключается в том, что файлы .ino предварительно обрабатываются и копируются во временный каталог вместе с другими библиотеками и файлами .cpp amp; .h. Программное обеспечение Arduino копирует эти файлы во временный каталог, но не копирует папки.