sideeffects / HoudiniNiagara

Houdini Data Interface for UE4 Niagara
Other
320 stars 62 forks source link

Is it possible to build from source and use HoudiniNiagara on 4.27.0 #23

Closed anoxdetox closed 2 years ago

anoxdetox commented 3 years ago

I have been trying to build from source using UAT and 4.27.0. Is it possible to do so?

Here is what I am getting... Thanks

Running AutomationTool... Parsing command line: BuildPlugin -Rocket -Plugin=D:\source\HoudiniBuild\Plugins\HoudiniNiagara\HoudiniNiagara.uplugin -TargetPlatforms=Win64 -Package=D:\source\HoudiniBuild..\HoudiniNiagara Copying 97 file(s) using max 64 thread(s) Reading plugin from D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\HoudiniNiagara.uplugin... Building plugin for host platforms: Win64 Running: D:\Engine\UE_4.27\Engine\Binaries\DotNET\UnrealBuildTool.exe UE4Editor Win64 Development -Project=D:\source\HoudiniNiagara\HostProject\HostProject.uproject -plugin=D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\HoudiniNiagara.uplugin -iwyu -noubtmakefiles -manifest=D:\source\HoudiniNiagara\HostProject\Saved\Manifest-UE4Editor-Win64-Development.xml -nohotreload -log="C:\Users\Render\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Engine+UE_4.27\UBT-UE4Editor-Win64-Development.txt" Parsing headers for UE4Editor Running UnrealHeaderTool "D:\source\HoudiniNiagara\HostProject\HostProject.uproject" "D:\source\HoudiniNiagara\HostProject\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="C:\Users\Render\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Engine+UE_4.27\UHT-UE4Editor-Win64-Development.txt" -installed LogInit: Display: Loading text-based GConfig.... Reflection code generated for UE4Editor in 5.6119855 seconds Writing manifest to D:\source\HoudiniNiagara\HostProject\Saved\Manifest-UE4Editor-Win64-Development.xml Building UE4Editor... Using Visual Studio 2019 14.29.30037 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037) and Windows 10.0.18362.0 SDK (C:\Program Files (x86)\Windows Kits\10). Building 13 actions with 32 processes... [1/13] Default.rc2 [2/13] Default.rc2 [3/13] SharedPCH.UnrealEd.ShadowErrors.cpp [4/13] Module.HoudiniNiagaraEditor.gen.cpp [5/13] Module.HoudiniNiagaraEditor.cpp [6/13] UE4Editor-HoudiniNiagaraEditor.lib Creating library D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagaraEditor\UE4Editor-HoudiniNiagaraEditor.lib and object D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagaraEditor\UE4Editor-HoudiniNiagaraEditor.exp [7/13] SharedPCH.Engine.ShadowErrors.cpp [8/13] Module.HoudiniNiagara.gen.cpp [9/13] Module.HoudiniNiagara.cpp D:/source/HoudiniNiagara/HostProject/Plugins/HoudiniNiagara/Source/HoudiniNiagara/Private/NiagaraDataInterfaceHoudini.cpp(118): warning C4996: 'FNiagaraTypeRegistry::Register': This overload is deprecated, please use the Register function that takes registration flags instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile. D:/source/HoudiniNiagara/HostProject/Plugins/HoudiniNiagara/Source/HoudiniNiagara/Private/NiagaraDataInterfaceHoudini.cpp(119): warning C4996: 'FNiagaraTypeRegistry::Register': This overload is deprecated, please use the Register function that takes registration flags instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile. [10/13] UE4Editor-HoudiniNiagara.lib Creating library D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagara\UE4Editor-HoudiniNiagara.lib and object D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagara\UE4Editor-HoudiniNiagara.exp [11/13] UE4Editor-HoudiniNiagaraEditor.dll Creating library D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagaraEditor\UE4Editor-HoudiniNiagaraEditor.suppressed.lib and object D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagaraEditor\UE4Editor-HoudiniNiagaraEditor.suppressed.exp [12/13] UE4Editor-HoudiniNiagara.dll Creating library D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagara\UE4Editor-HoudiniNiagara.suppressed.lib and object D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Intermediate\Build\Win64\UE4Editor\Development\HoudiniNiagara\UE4Editor-HoudiniNiagara.suppressed.exp [13/13] UE4Editor.target Total time in Parallel executor: 56.80 seconds Total execution time: 65.24 seconds Took 65.382773s to run UnrealBuildTool.exe, ExitCode=0 Building plugin for target platforms: Win64 Running: D:\Engine\UE_4.27\Engine\Binaries\DotNET\UnrealBuildTool.exe UE4Game Win64 Development -Project=D:\source\HoudiniNiagara\HostProject\HostProject.uproject -plugin=D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\HoudiniNiagara.uplugin -iwyu -noubtmakefiles -manifest=D:\source\HoudiniNiagara\HostProject\Saved\Manifest-UE4Game-Win64-Development.xml -nohotreload -2017 -log="C:\Users\Render\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Engine+UE_4.27\UBT-UE4Game-Win64-Development.txt" Parsing headers for UE4Game Running UnrealHeaderTool "D:\source\HoudiniNiagara\HostProject\HostProject.uproject" "D:\source\HoudiniNiagara\HostProject\Intermediate\Build\Win64\UE4Game\Development\UE4Game.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="C:\Users\Render\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+Engine+UE_4.27\UHT-UE4Game-Win64-Development.txt" -installed LogInit: Display: Loading text-based GConfig.... Reflection code generated for UE4Game in 2.7233951 seconds Writing manifest to D:\source\HoudiniNiagara\HostProject\Saved\Manifest-UE4Game-Win64-Development.xml Building UE4Game... Using Visual Studio 2017 14.16.27045 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023) and Windows 10.0.18362.0 SDK (C:\Program Files (x86)\Windows Kits\10). Building 2 actions with 32 processes... [1/2] Module.HoudiniNiagara.gen.cpp D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara/Classes/NiagaraDataInterfaceHoudini.h(273): error C3668: 'UNiagaraDataInterfaceHoudini::GetFunctionHLSL': method with override specifier 'override' did not override any base class methods D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara/Classes/NiagaraDataInterfaceHoudini.h(274): error C3668: 'UNiagaraDataInterfaceHoudini::GetParameterDefinitionHLSL': method with override specifier 'override' did not override any base class methods D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara/Classes/NiagaraDataInterfaceHoudini.h(275): error C3668: 'UNiagaraDataInterfaceHoudini::GetCommonHLSL': method with override specifier 'override' did not override any base class methods [2/2] Module.HoudiniNiagara.cpp D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara\Classes\NiagaraDataInterfaceHoudini.h(273): error C3668: 'UNiagaraDataInterfaceHoudini::GetFunctionHLSL': method with override specifier 'override' did not override any base class methods D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara\Classes\NiagaraDataInterfaceHoudini.h(274): error C3668: 'UNiagaraDataInterfaceHoudini::GetParameterDefinitionHLSL': method with override specifier 'override' did not override any base class methods D:\source\HoudiniNiagara\HostProject\Plugins\HoudiniNiagara\Source\HoudiniNiagara\Classes\NiagaraDataInterfaceHoudini.h(275): error C3668: 'UNiagaraDataInterfaceHoudini::GetCommonHLSL': method with override specifier 'override' did not override any base class methods D:/source/HoudiniNiagara/HostProject/Plugins/HoudiniNiagara/Source/HoudiniNiagara/Private/NiagaraDataInterfaceHoudini.cpp(118): warning C4996: 'FNiagaraTypeRegistry::Register': This overload is deprecated, please use the Register function that takes registration flags instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile. d:\engine\ue_4.27\engine\plugins\fx\niagara\source\niagara\public\NiagaraTypes.h(1155): note: see declaration of 'FNiagaraTypeRegistry::Register' D:/source/HoudiniNiagara/HostProject/Plugins/HoudiniNiagara/Source/HoudiniNiagara/Private/NiagaraDataInterfaceHoudini.cpp(119): warning C4996: 'FNiagaraTypeRegistry::Register': This overload is deprecated, please use the Register function that takes registration flags instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile. d:\engine\ue_4.27\engine\plugins\fx\niagara\source\niagara\public\NiagaraTypes.h(1155): note: see declaration of 'FNiagaraTypeRegistry::Register' Took 23.176625s to run UnrealBuildTool.exe, ExitCode=6

nanocell commented 2 years ago

Hi,

The latest code from the UE4.27 branch (https://github.com/sideeffects/HoudiniNiagara/tree/UE4.27) should build, yes. You can also grab the source + binaries from the release, for convenience: https://github.com/sideeffects/HoudiniNiagara/releases/tag/v2.2.0-UE4.27.

GarmOfGnipahellir commented 2 years ago

Isn't this actually a bug?

From NiagaraDataInterface.h:

#if WITH_EDITORONLY_DATA
    /** Allows data interfaces to provide common functionality that will be shared across interfaces on that type. */
    virtual void GetCommonHLSL(FString& OutHLSL)
    {
    }

    virtual void GetParameterDefinitionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, FString& OutHLSL)
    {
    }

    virtual bool GetFunctionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, const FNiagaraDataInterfaceGeneratedFunction& FunctionInfo, int FunctionInstanceIndex, FString& OutHLSL)
    {
        return false;
    }

    /**
    Allows data interfaces the opportunity to rename / change the function signature and perform an upgrade.
    Return true if the signature was modified and we need to refresh the pins / name, etc.
    */
    virtual bool UpgradeFunctionCall(FNiagaraFunctionSignature& FunctionSignature)
    {
        return false;
    }
#endif

These functions doesn't exist when packaging, which causes the build to fail because the plugin assume they do.

GarmOfGnipahellir commented 2 years ago

Putting GetFunctionHLSL, GetParameterDefinitionHLSL and GetCommonHLSL functions in #if WITH_EDITORONLY_DATA clauses solved my build error when packaging. If you consider this a bug I can make a pull request.

nanocell commented 2 years ago

Thanks for PR! Merged and fixed :).