Я использую 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++/
? Что-то другое?
Замечания: Да, я знаю, что могу добавить их в флаги компилятора; Я спрашиваю, разумно ли делать больше, чем это.
Там не должно быть никакой необходимости, если вы говорите о стандартных 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'