Я должен символическую ссылку 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++/? Что-то другое?

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

2 ответа

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

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

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

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

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

CPPFLAGS='-I/usr/lib/gcc/i686-pc-cygwin/4.8.2/include/c++/tr1 -I/whatev' 
Другие вопросы по тегам