Добавить только конкретный подкаталог пути включения для включений

У меня есть проект, который построен с использованием cmake.
Этот проект использует avr-gcc для компиляции двоичных файлов, и я использую boost mpl для некоторых его частей.

Так как avr-gcc не имеет / usr / include в качестве пути включения по умолчанию, но там установлен boost, мне нужно добавить его как путь включения, чтобы был найден boost.
К сожалению, добавление -I / usr / include к командной строке приводит к извлечению всех других файлов и каталогов в / usr / include, что, похоже, приводит к конфликтам с avr include и, следовательно, к ошибкам компилятора.

Мое первоначальное решение включало мягкую ссылку на / usr / include / boost в одном из моих пользовательских каталогов include для разрешения

#include <boost/mpl/*>

Однако я подумал, что это не очень зависит от платформы, и решил, что cmake добавит путь включения для boost. Это снова привело к присутствию «-I / usr / include» в команде компилятора.

Как мне решить эту проблему независимо от платформы?

Решением было бы позволить cmake создать ссылку для меня, чтобы получить правильный каталог include.
Тем не менее, я считаю, что решение по символическим ссылкам в целом ужасно.
Есть ли что-то лучшее, что я могу сделать?

Например: есть ли опция, которая добавляет путь включения под псевдонимом, например:

-I/usr/include/boost:boost

Который добавил бы только подпапку boost под названием boost, чтобы быть включенным #include <boost/...> Директива?

1

Решение

Я вижу как минимум два варианта для вас:

  1. Где же avr-gcc включать файлы по умолчанию? Скажем так /opt/avr-gcc/include для конкретности. Тогда то, что может работать для вас -I/opt/avr-gcc/include -I/usr/include,

  2. Другой вариант — установить Boost в другой каталог и использовать его вместо Boost в /usr/include, Например, вы можете создать /opt/boost а затем использовать -I/opt/boost (или подкаталог под этим) в командной строке.

0

Другие решения

Других решений пока нет …