У меня есть проект CMake для кросс-компиляции исполняемых файлов для STM32. Структура проекта включает в себя папки для различных необходимых зависимостей, где исходные файлы и файлы заголовков включены в эти папки. Файл CMakeLists.txt для создания проекта так же прост, как настройка для кросс-компиляции и затем glob
сборка исходников из каждой зависимости и кода пользователя с последующим установкой расположения всех заголовков с помощью include_directories
. Наконец, add_executable
используется для объединения всего и построения двоичного файла.
Я понимаю, что это, вероятно, не самый оптимальный способ сделать это (вероятно, следует собрать deps как библиотеки), но пока он работает.
Проблема возникает с депо, имеющим много слоев подкаталогов (lwIP), а файлы исходного кода и заголовка содержат операторы include, которые являются ссылками на уровни подкаталогов в этом депо. Например, структура файла lwIP выглядит следующим образом:
> LwIP
| include
| lwip
| err.h
| netif
Исходный файл lwIP (или заголовочный файл!) Может содержать «lwip / err.h». Конечно, препрокат не может найти этот файл, потому что относительный путь к нему не имеет смысла.
Как мне настроить этот проект так, чтобы эти включения могли использоваться без изменения исходных файлов или заголовочных файлов?