Добавить только конкретный подкаталог пути включения для включений
У меня есть проект, который построен с использованием 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 ответ
Я вижу как минимум два варианта для вас:
Где же
avr-gcc
включать файлы по умолчанию? Скажем так/opt/avr-gcc/include
для конкретности. Тогда то, что может работать для вас-I/opt/avr-gcc/include -I/usr/include
,Другой вариант - установить Boost в другой каталог и использовать его вместо Boost в
/usr/include
, Например, вы можете создать/opt/boost
а затем использовать-I/opt/boost
(или подкаталог под этим) в командной строке.