Unreal Engine 4 http://uengine.ru/forum/ |
|
Вопрос по visual studio http://uengine.ru/forum/viewtopic.php?f=2&t=15028 |
Страница 1 из 1 |
Автор: | DenCommander [ 31 окт 2018, 16:00 ] |
Заголовок сообщения: | Вопрос по visual studio |
В своем cpp файле пишу #include "Engine/Canvas.h" Но реально же файл canvas.h в solution explorer находится в ветке Engine/UE4/Source/Runtime/Engine/Classes/Engine/Canvas.h Как VS понимает, что Engine/Canvas.h надо искать именно в Engine/UE4/Source/Runtime/Engine/Classes/ ? Я бы сам не нашел, если бы поиск не запустил. |
Автор: | Agny [ 31 окт 2018, 17:27 ] |
Заголовок сообщения: | |
А в чем вопрос то ? Ну для упрощения так сделано... Что всё необходимое уже встроено. |
Автор: | DenCommander [ 31 окт 2018, 20:40 ] |
Заголовок сообщения: | |
Почему в include надо писать именно Engine/Canvas.h ? Не Classes/Engine/Canvas.h, не Runtime/Engine/Classes/Engine/Canvas.h, не Canvas.h. Как будто где-то записано что все относительные пути надо искать именно начиная с папки Engine/UE4/Source/Runtime/Engine/Classes/ Т.е. похоже в студии есть нечто, напоминающее переменную окружения path в операционной системе, какой-то аналог. |
Автор: | DenCommander [ 01 июн 2019, 11:42 ] |
Заголовок сообщения: | |
Разобрался Т.к. движок состоит из модулей, каждый модуль имеет свой относительный путь. Собственно, canvas.h находится в модуле "engine", путь к которому: /UE4/Source/Runtime/Engine/ А Unreal Build Tool в файле UEBuildModuleCPP.cs включает еще и дополнительные папки в путь поиска. Это папки Private, Public и Classes UEBuildModuleCPP.cs: Код: private void AddDefaultIncludePaths() { // Add the module's parent directory to the public include paths, so other modules may include headers from it explicitly. PublicIncludePaths.Add(ModuleDirectory.ParentDirectory); // Add the base directory to the legacy include paths. LegacyPublicIncludePaths.Add(ModuleDirectory); // Add the 'classes' directory, if it exists DirectoryReference ClassesDirectory = DirectoryReference.Combine(ModuleDirectory, "Classes"); if (DirectoryLookupCache.DirectoryExists(ClassesDirectory)) { PublicIncludePaths.Add(ClassesDirectory); } // Add all the public directories DirectoryReference PublicDirectory = DirectoryReference.Combine(ModuleDirectory, "Public"); if (DirectoryLookupCache.DirectoryExists(PublicDirectory)) { PublicIncludePaths.Add(PublicDirectory); ReadOnlyHashSet<string> ExcludeNames = UEBuildPlatform.GetBuildPlatform(Rules.Target.Platform).GetExcludedFolderNames(); EnumerateLegacyIncludePaths(DirectoryItem.GetItemByDirectoryReference(PublicDirectory), ExcludeNames, LegacyPublicIncludePaths); } // Add the base private directory for this module DirectoryReference PrivateDirectory = DirectoryReference.Combine(ModuleDirectory, "Private"); if(DirectoryLookupCache.DirectoryExists(PrivateDirectory)) { PrivateIncludePaths.Add(PrivateDirectory); } } Поэтому инклуд для любого объекта из модуля "engine" можно указывать относительно папки Engine/UE4/Source/Runtime/Engine/Classes/ |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |