Я должен включить много файлов заголовков, которые находятся в разных подкаталогах. Есть ли способ в Visual Studio (я использую версию 2005 года), чтобы установить один путь include, который Visual Studio будет искать также подкаталоги для файлов заголовков?Как включить подкаталоги в Visual Studio?
ответ
Настройка путей поиска папок в настройках Visual Studio для исправления проблемы с включением, как правило, не очень хорошая идея с точки зрения дизайна. Ваш код будет менее переносимым для разных машин с различными раскладками каталогов.
Мое предложение было бы оседать на организации вашего кода, так что относительные пути к поддиректории (по отношению к вашему включая код) фиксированы:
- Добавьте «базовую папку» для проект (свойства проекта -> Свойства конфигурации -> C/C++ -> Дополнительные каталоги включения, "дополнительные включенные каталоги")
- Добавьте подкаталоги в операторы #include, то есть
#include "subdirectory/somefile.h"
.
У этого есть дополнительный бонус, чтобы видеть, какая папка в вашем решении содержит файл - это часто полезная информация, когда вы пытаетесь найти свой путь или пытаетесь выяснить, какой файл для ,
Я считаю, что использование рекурсивного поиска включенных файлов вызовет гораздо больше проблем, чем решает проблему в виде неправильных файлов или неверных версий. В конце концов, вы должны определить правильные каталоги один раз при настройке проекта.
Мы не нашли способ установки рекурсивного поиска папок в Visual Studio (хотя Xcode не имеет проблем с настройкой и использованием). Что мы делаем это список всех каталогов в файл, а также указать файл в дополнительных опциях C/C++ Command Line:
@ «IncludeFolders.rsp» при том, что
Мы редко найти проблемы с использованием рекурсивного поиска, случайное включение `/ '' немного замедляло ситуацию.
Я обнаружил, что я могу сократить длину пути в большинстве ситуаций, в том числе в MSVC, небольшим трюком с помощью команды SUBST. Я покажу и пример для сокращения унаследованных по умолчанию C++ include путей, но вы сделаете это для ваших связанных с проектом путей. Сначала нужно создать один или несколько пакетных файлов, как это (и запускать их из проводника Windows или из командной строки):
MDrive.bat:
subst M: /D
subst M: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC"
WDrive.bat:
subst W: /D
subst W: "C:\Program Files (x86)\Windows Kits\8.1\Include"
... This is just and example. You would do this for your
project related include directories.
Вы можете создать несколько из них для более длинных трасс. В приведенном выше случае я только сокращаю стандартные унаследованные пути, которые MSVC использует по умолчанию. BTW, команда подстановки работает без административных прав, но не наступает на существующую физическую или сопоставленную букву диска (я не уверен, что произойдет - я не хочу ее проверять в данный момент).
Этот шаг не является обязательным. Я в MSVS 2010+ добавляю персонализированную страницу свойств. BTW, если вы не знаете о пользовательских листах свойств, вы должны. См. Property Pages (Visual C++). VIEW-Other Windows-Property Window, щелкните правой кнопкой мыши проект в Менеджере недвижимости, Добавить новый лист свойств проекта. Под Пользовательские макросы, добавьте макрос, например.MyProjectIncludePaths и установить значение (в данном примере) в
M:; M:\atlmfc\include; W:\um; W:\shared; W:\winrt
--only 49 символов в этом примере, что гораздо короче, чем значение по умолчанию
$(VC_IncludePath); $(WindowsSKD_IncludePath)
который при макроподстановке переводит к
C:\Program Files (x86)\Windows Kits\8.1\Include;C:\Program Files (x86)\Windows Kits\8.1\Include\atlmfc\include;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt
По моему подсчету по умолчанию 270 символов - т.е. более 260 символов - может ли кто-нибудь объяснить это?
В Страницы свойств для проекта (т.е. не пользовательского свойства листа), в моем примере я пошел Configuration Properties-VC++ Directories и изменили каталоги включения значение $ (MyProjectIncludePaths) , но на практике это вы перейдете к (на странице пользовательской страницы свойств, если вы ее создали) C/C++ - общий и добавьте $ (MyProjectIncludePaths) в Дополнительные каталоги ссылок.
В дополнение к унаследованным 270 символьным дорожкам, я смог добавить несколько разумных путей длины под Дополнительные каталоги ссылок. Возможно, дополнительные каталоги Include имеют собственный предел длины (?).
- 1. Как включить сравнение данных в Visual Studio?
- 2. Как включить «контекстный» редактор в Visual Studio?
- 3. Как включить библиотеки в Visual Studio 2012?
- 4. Как включить IntelliSense в Visual Studio 2010?
- 5. Как включить многопроцессорные сборки в Visual Studio
- 6. Как включить всплывающие подсказки в Visual Studio
- 7. как включить intellisense в коде Visual Studio?
- 8. Включить подкаталоги в url-pattern
- 9. Как включить подкаталоги в сборке общего объекта
- 10. Как включить подкаталоги в задаче gulp
- 11. Как автоматически включить расширение Visual Studio
- 12. Включить поддержку TagHelper Intellisense в Visual Studio
- 13. Включить объект .pdf в Visual Studio 2015
- 14. Включить внешнюю .dll в Visual Studio Extension
- 15. Включить пути в Visual Studio Express 2012
- 16. Включить ресурсы в компиляцию visual studio
- 17. Невозможно включить файлы в Visual Studio 2013
- 18. Включить C# проектов в Visual Studio 2010
- 19. Включить одно предупреждение в Visual Studio
- 20. Как настроить JNI подкаталоги в Android Studio
- 21. Visual Studio - Release Folders
- 22. Как включить распознавание токена в сигнатуре метода в Visual Studio?
- 23. Как включить отладку в режиме x64 в visual studio?
- 24. Как включить экспорт в csv в visual studio
- 25. В Visual Studio, как включить встроенный файл в другой проект?
- 26. Как включить проект в другой проект в visual studio 2012
- 27. Visual Studio/C#: включить/объединить файлы
- 28. Включить конфигурацию ASP.NET для Visual Studio 2013
- 29. Как включить поддержку языка ассемблера в Visual Studio 2015
- 30. Как включить создание BizTalk-проектов в Visual Studio 2008?
Неправильно. Рекурсивные поисковые запросы были стандартными среди классических сред разработки Macintosh, таких как CodeWarrior. У них было простое соглашение о том, что использование parens вокруг (каталога) пропустило его с автоматическим включением, поэтому вам пришлось добавить определенный путь. Это очень упростило список включений, и я всегда пропустил его в Windows. – 2010-05-19 06:01:54