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

У меня есть проект, который построен с использованием 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 (или подкаталог под этим) в командной строке.

Другие вопросы по тегам