GCC — я должен символическую ссылку C ++ include каталог, чтобы он также появился в / usr / include?

Я использую Cygwin32 на Win7 64. У меня установлены g ++ и libstdc ++. C ++ включает в себя расположены по адресу /usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1/ — но нигде /usr/include,

Разумно ли разместить их по символической ссылке под /usr/include? Если нет, то почему? И если так, то почему это не сделано по умолчанию? И какой должна быть символическая ссылка? /usr/include/c++/ ? Что-то другое?

Замечания: Да, я знаю, что могу добавить их в флаги компилятора; Я спрашиваю, разумно ли делать больше, чем это.

1

Решение

Там не должно быть никакой необходимости, если вы говорите о стандартных C ++ включает. Версия g ++, предназначенная для их использования, должна знать об этом местоположении, и, поскольку у вас могут быть разные версии gcc (например, версия MinGW), лучше оставить ее, так как это не должно путать другие компиляторы.

Если у вашего компилятора возникают проблемы с поиском его собственных включений, то это совсем другое дело.

Если вам интересно, как и почему определяется это местоположение, прочитайте Вот, в частности, под опцией —enable-version-specific-runtime-libs … он говорит что-то об «использовании нескольких версий gcc параллельно». Вы также можете проверить фактический скрипт настройки в каталоге исходного кода libstdc ++ — v3 …

По моему личному опыту, когда вы создаете одну библиотеку для нескольких платформ, вы просто хотите, чтобы (кросс) компиляторы были как можно более независимыми. Если каждый компилятор помещает свои включения в / usr / include / c ++ … ну, это может плохо кончиться. Фактически, в соответствии с этим конкретным сценарием для каждого компилятора может быть разумно как можно лучше скрыть свои конкретные заголовочные и библиотечные файлы …

1

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

Просто добавьте их в переменную среды CPPFLAGS (или в вашем makefile):

CPPFLAGS='-I/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1 -I/whatev'
0

По вопросам рекламы [email protected]