Sora Moore
sora.moore
About Me
Connect
LOCATION
Not Specified
ウェブサイト
Houdini Engine
Availability
Not Specified
Recent Forum Posts
Compile issue with Houdini Plugin for Unreal - v21 2025年11月6日10:45
We resolved it.
It appears to be related to the fact our project has Unity Build and disabled PCH.
Part 1 - Header include order matters (evil!)
The order of these two includes matters:
#include "HoudiniEngineEditorPrivatePCH.h"
#include "HoudiniEngineRuntimePrivatePCH.h"
In this case, "HoudiniEngineRuntimePrivatePCH.h" requires HOUDINI_ENGINE_EDITOR to be defined in order to call
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineEditor, Log, All);
which is required for DEFINE_LOG_CATEGORY(LogHoudiniEngineEditor); to work in the above source file.
Therefore the safe order of header includes is
#include "HoudiniEngineEditorPrivatePCH.h"
#include "HoudiniEngineRuntimePrivatePCH.h"
Which is generally what you get when you start your source file with #include "HoudiniEngineEditorPrivatePCH.h" as that include file first defines HOUDINI_ENGINE_EDITOR, then calls #include "HoudiniEngineRuntimePrivatePCH.h". Great!!
We saw this was the case when we attempted to compile the file on it's own (which worked!), But NOT when we attempted to build the project with Unity build...
Part 2 - Unity Build and PCH
We would see the above issue when we attempted to do a unity build.
We're assuming that when PCH is enabled, certain header include order issues are bypassed because we're just going to be using a precompiled header. Cool. (We're still investigating exactly how PCH works on our end WRT this issue). It doesn't matter because we disabled it.
What we're assuming happened is that the Unity build collected a set of source files such that "HoudiniEngineRuntimePrivatePCH.h" was included before "HoudiniEngineEditorPrivatePCH.h"
This would explain the compiler issue. Ew.
To resolve this, we checked the intermediate files to determine the unity build order:
...Plugins\Runtime\HoudiniEngine\Intermediate\Build\Win64\x64\UnrealEditor\Development\HoudiniEngineEditor\Module.HoudiniEngineEditor.gen.N.cpp
This revealed that AssetTypeActions_HoudiniAsset.cpp was one of the first files. We checked it and moved #include "HoudiniEngineEditorPrivatePCH.h" from it's given line to the top so it's the first include in the source file. This allowed unity build to compile.
Part 3 - The future
This solution only works for the permutation of unity build. If we breathe on the plugin source code (which is required as we make changes to fix plugin bugs and integrate with our version of Unreal engine), we could end up with the same issue again if the unity build permutation changes.
It appears to be related to the fact our project has Unity Build and disabled PCH.
Part 1 - Header include order matters (evil!)
The order of these two includes matters:
#include "HoudiniEngineEditorPrivatePCH.h"
#include "HoudiniEngineRuntimePrivatePCH.h"
In this case, "HoudiniEngineRuntimePrivatePCH.h" requires HOUDINI_ENGINE_EDITOR to be defined in order to call
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineEditor, Log, All);
which is required for DEFINE_LOG_CATEGORY(LogHoudiniEngineEditor); to work in the above source file.
Therefore the safe order of header includes is
#include "HoudiniEngineEditorPrivatePCH.h"
#include "HoudiniEngineRuntimePrivatePCH.h"
Which is generally what you get when you start your source file with #include "HoudiniEngineEditorPrivatePCH.h" as that include file first defines HOUDINI_ENGINE_EDITOR, then calls #include "HoudiniEngineRuntimePrivatePCH.h". Great!!
We saw this was the case when we attempted to compile the file on it's own (which worked!), But NOT when we attempted to build the project with Unity build...
Part 2 - Unity Build and PCH
We would see the above issue when we attempted to do a unity build.
We're assuming that when PCH is enabled, certain header include order issues are bypassed because we're just going to be using a precompiled header. Cool. (We're still investigating exactly how PCH works on our end WRT this issue). It doesn't matter because we disabled it.
What we're assuming happened is that the Unity build collected a set of source files such that "HoudiniEngineRuntimePrivatePCH.h" was included before "HoudiniEngineEditorPrivatePCH.h"
This would explain the compiler issue. Ew.
To resolve this, we checked the intermediate files to determine the unity build order:
...Plugins\Runtime\HoudiniEngine\Intermediate\Build\Win64\x64\UnrealEditor\Development\HoudiniEngineEditor\Module.HoudiniEngineEditor.gen.N.cpp
This revealed that AssetTypeActions_HoudiniAsset.cpp was one of the first files. We checked it and moved #include "HoudiniEngineEditorPrivatePCH.h" from it's given line to the top so it's the first include in the source file. This allowed unity build to compile.
Part 3 - The future
This solution only works for the permutation of unity build. If we breathe on the plugin source code (which is required as we make changes to fix plugin bugs and integrate with our version of Unreal engine), we could end up with the same issue again if the unity build permutation changes.
Compile issue with Houdini Plugin for Unreal - v21 2025年11月5日18:52
We're seeing this issue when we attempt to compile the plugin with a non unity build. We've made no changes to this source file and it doesn't compile on our end. (This is plugin version 21.0.512.0)
11/5/2025 6:49:48 PM - ubt> ------ Building 5 action(s) started ------
11/5/2025 6:50:05 PM - ubt> Compile Module.HoudiniEngineEditor.1.cpp
11/5/2025 6:50:05 PM - ubt> D:\TRS_Perforce_Juno2\Game\Engine\Plugins\Runtime\HoudiniEngine\Source\HoudiniEngineEditor\Private\HoudiniEngineEditor.cpp(112,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
11/5/2025 6:50:05 PM - ubt> DEFINE_LOG_CATEGORY(LogHoudiniEngineEditor);
11/5/2025 6:50:05 PM - ubt> ^
11/5/2025 6:50:05 PM - ubt> D:\TRS_Perforce_Juno2\Game\Engine\Plugins\Runtime\HoudiniEngine\Source\HoudiniEngineEditor\Private\HoudiniEngineEditor.cpp(112,1): error C2146: syntax error: missing ';' before identifier 'LogHoudiniEngineEditor'
Weirdly. It compiles as expected in a unity build. But as soon as we try to compile the C++ on it's own it fails with this error. We suspect maybe a macro is getting mangled or something but it's a tall stack of headers to dig through
11/5/2025 6:49:48 PM - ubt> ------ Building 5 action(s) started ------
11/5/2025 6:50:05 PM - ubt> Compile Module.HoudiniEngineEditor.1.cpp
11/5/2025 6:50:05 PM - ubt> D:\TRS_Perforce_Juno2\Game\Engine\Plugins\Runtime\HoudiniEngine\Source\HoudiniEngineEditor\Private\HoudiniEngineEditor.cpp(112,1): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
11/5/2025 6:50:05 PM - ubt> DEFINE_LOG_CATEGORY(LogHoudiniEngineEditor);
11/5/2025 6:50:05 PM - ubt> ^
11/5/2025 6:50:05 PM - ubt> D:\TRS_Perforce_Juno2\Game\Engine\Plugins\Runtime\HoudiniEngine\Source\HoudiniEngineEditor\Private\HoudiniEngineEditor.cpp(112,1): error C2146: syntax error: missing ';' before identifier 'LogHoudiniEngineEditor'
Weirdly. It compiles as expected in a unity build. But as soon as we try to compile the C++ on it's own it fails with this error. We suspect maybe a macro is getting mangled or something but it's a tall stack of headers to dig through