Странная работа компилятора (или прекомпилятора?) IDE

playthegame
Offline
Зарегистрирован: 08.11.2016

Добрый день! Прошу помощи, всю голову сломал. Поиск не дал результатов.

Имеем проект из двух очень простых файлов.

Вариант 1.

Данный вариант компилируется без ошибок

Файл 1, test.ino:

#include <LiquidCrystalRus.h>
void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
}

Файл 2, test2.cpp:

#include <LiquidCrystalRus.h>

Теперь вариант 2.

Все то же самое, только в файле test.ino комментируем первую строчку с include (эта библитоека там и не используется по факту)

Файл 1, test.ino:

//#include <LiquidCrystalRus.h>

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Файл 2, test2.cpp (без изменений):

#include <LiquidCrystalRus.h>
 

И о ужас :) проект перестает компилироваться, выдается ошибка:

test2.cpp:1:30: fatal error: LiquidCrystalRus.h: No such file or directory
 #include <LiquidCrystalRus.h>
                              ^

Библиотека точно присутствует (и в первом варианте без проблем все).

Если вместо библиотечного хидера задавать локальный заголовок из проекта типа:

#include "test.h"

то все работает в обоих вариантах.

 

Что не так, подскажите, пожалуйста.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Особенность компоновки проекта в IDE. Просто знайте и не берите в голову.

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Препроцессор, будьте грамотны-с.

playthegame
Offline
Зарегистрирован: 08.11.2016

ЕвгенийП пишет:

Особенность компоновки проекта в IDE. Просто знайте и не берите в голову.

Однако сей факт не позволяет инкапсулировать весь код, касающийся отдельного класса, в отдельном файле. Придется в любом случае заголовочный файл (как написано в примере), дублировать в главном файле проекта. Или я не правильно понимаю?

playthegame
Offline
Зарегистрирован: 08.11.2016

Yarik.Yar пишет:
Препроцессор, будьте грамотны-с.

Постараюсь :) Однако я программировал на С++ последний раз лет этак почти 15 назад, и сейчас сходу не все вспоминается. Но так и предполагал.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

playthegame пишет:

Однако сей факт не позволяет инкапсулировать весь код, касающийся отдельного класса, в отдельном файле. Придется в любом случае заголовочный файл (как написано в примере), дублировать в главном файле проекта. Или я не правильно понимаю?

Ну, можете полный путь указать, но это как-то некомильфо.