Войти
Unreal EngineФорумПрограммирование

Доступ к функциям без Include в каждом файле

Страницы: 1 2 Следующая »
#0
19:57, 13 сен. 2021

Есть файл h (пока только макросы в нем, обернуты в namespace), который нужен практически в каждом cpp, каждый раз его инклудить уже надоело, можно его как-нибудь заинклудить глобально?


#1
(Правка: 21:32) 21:30, 13 сен. 2021

Тут важно еще уточнить: какая IDE/Make/Compiler используется?
(блин UE же, а значить Visual Studio...)

Но если вдруг отсутствует штатное решение, то скорее всего есть что-то типа Pre-build tools/scripts, а значить можно написать программу или скрипт, который будет парсить файлы h/cpp и править их если нужно...

Можно сразу создавать h/cpp по шаблону, где уже будет прописан include.

#2
21:44, 13 сен. 2021

У CL есть /FI"MyMacros.h"
https://docs.microsoft.com/en-us/cpp/build/reference/fi-name-forc… view=msvc-160

#3
3:37, 14 сен. 2021

искал PCH нашёл IWYU
https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/Buil… ildTool/IWYU/

#4
(Правка: 6:40) 6:39, 14 сен. 2021
Добавьте файл заголовка в личную папку вашего модуля. Имя неважно.

В файле .Build.cs вашего модуля после PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;строки добавьте: PrivatePCHHeaderFile = "Private/YourPCHFile.h";
Добавьте кучу включаемых файлов в ваш предварительно скомпилированный заголовочный включаемый файл.

http://kantandev.com/articles/ue4-includes-precompiled-headers-an… -what-you-use

#5
10:45, 14 сен. 2021

#!
> искал PCH нашёл IWYU
Учитывая что сборщик анреала любит склеивать несколько файлов в один...
Cразу он это не начнёт делать, только когда ~100 файлов наберётся.

#6
22:56, 14 сен. 2021

smartxp
Там есть файл проекта, в который ты можешь добавить все что угодно, в котором написано include CoreMinimal.h.
После этого, любой файл проекта его содержит.

#7
23:02, 15 сен. 2021

Кто-нибудь пробовал предложенные варианты - работает? у меня не один из вариантов не работает.

#8
(Правка: 23:48) 23:42, 15 сен. 2021

smartxp
> пока только макросы в нем, обернуты в namespace
> у меня не один из вариантов не работает.
не работал с макросами.. но не думал что это отличается, в любом случае это с++ и всё что работает там, должно работать и под UE.

#9
20:02, 16 сен. 2021

smartxp
> Есть файл h (пока только макросы в нем, обернуты в namespace), который нужен
> практически в каждом cpp, каждый раз его инклудить уже надоело, можно его
> как-нибудь заинклудить глобально?

в любом случае будешь инклудить CoreMinimal или ActorComponent или еще какой-то ширпотреб, сделай в своем проэкте Shared.h который тащит все что нужно, а про PCH забудь, кроме гемора с ним ничего хорошего не бывает

#10
21:51, 16 сен. 2021

smartxp
> Кто-нибудь пробовал предложенные варианты - работает? у меня не один из
> вариантов не работает.
Что, не получается в настройках проекта добавить ключ компилятору /FI"[your common header.h]"?

+ Показать
#11
22:44, 16 сен. 2021

baga
> в любом случае будешь инклудить CoreMinimal или ActorComponent или еще какой-то
> ширпотреб, сделай в своем проэкте Shared.h который тащит все что нужно, а про
> PCH забудь, кроме гемора с ним ничего хорошего не бывает
Про общий файл я уже думал, только это мою проблему не решает.

Daimos
> Что, не получается в настройках проекта добавить ключ компилятору /FI"[your
> common header.h]"?
Вот только нет этих настроек в проектах созданных на UE.

+ Показать
#12
23:34, 16 сен. 2021

smartxp
> Вот только нет этих настроек в проектах созданных на UE.
Хмм, вот оно как, значить нужно пробовать через UnrealBuildTool ->AdditionalCompilerArguments

+ Что-то по типу этого

#13
0:15, 17 сен. 2021

smartxp
> Вот только нет этих настроек в проектах созданных на UE.
Ты вкурсе что у UE свой сборщик? Он файлы на С# хавает.

И там должно быть что-то типо

        PCHUsage = PCHUsageMode.NoSharedPCHs;
        PrivatePCHHeaderFile = "YourPch.h";


Daimos
>
> AdditionalCompilerArguments += " /FI\"Header.h\"";
Плохая идея...

#14
0:31, 17 сен. 2021

baga
> а про PCH забудь, кроме гемора с ним ничего хорошего не бывает
И что же нетак с PCH?

Страницы: 1 2 Следующая »
Unreal EngineФорумПрограммирование