1 like 0 dislike
194 views

Unfortunately it appears the PopcornFX 1.4.4 plugin fails to compile when building Unreal Engine 4.16 on Linux:

Reflection code generated for UE4Editor in 13.7852898 seconds
Using bundled libc++ standard C++ library.
Using fast way to relink  circularly dependent libraries (no FixDeps).
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXCopyShaders/Private/PopcornFXCopyShadersModule.cpp(1): error: Expected PopcornFXCopyShadersModule.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXCustomVersion.cpp(1): error: Expected PopcornFXCustomVersion.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXFunctions.cpp(1): error: Expected PopcornFXFunctions.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXHelper.cpp(1): error: Expected PopcornFXHelper.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXPlugin.cpp(1): error: Expected PopcornFXPlugin.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXPublicBase.cpp(1): error: Expected PopcornFXPublicBase.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXRefPtrWrap.cpp(1): error: Expected PopcornFXRefPtrWrap.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXSettings.cpp(1): error: Expected PopcornFXSettings.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXSettingsEditor.cpp(1): error: Expected PopcornFXSettingsEditor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/PopcornFXStats.cpp(1): error: Expected PopcornFXStats.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXAssetDep.cpp(1): error: Expected PopcornFXAssetDep.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXEffect.cpp(1): error: Expected PopcornFXEffect.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXFile.cpp(1): error: Expected PopcornFXFile.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXMesh.cpp(1): error: Expected PopcornFXMesh.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXRendererMaterial.cpp(1): error: Expected PopcornFXRendererMaterial.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXSimulationCache.cpp(1): error: Expected PopcornFXSimulationCache.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXStaticMeshData.cpp(1): error: Expected PopcornFXStaticMeshData.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Assets/PopcornFXTextureAtlas.cpp(1): error: Expected PopcornFXTextureAtlas.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Attributes/PopcornFXAttributeFunctions.cpp(1): error: Expected PopcornFXAttributeFunctions.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Attributes/PopcornFXAttributeList.cpp(1): error: Expected PopcornFXAttributeList.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Attributes/PopcornFXAttributeSamplerSkinnedMesh.cpp(1): error: Expected PopcornFXAttributeSamplerSkinnedMesh.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/DependencyModules/PopcornFXDependencyModule.cpp(1): error: Expected PopcornFXDependencyModule.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/DependencyModules/PopcornFXDependencyModuleAssetTools.cpp(1): error: Expected PopcornFXDependencyModuleAssetTools.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/DependencyModules/PopcornFXDependencyModuleLevelEditor.cpp(1): error: Expected PopcornFXDependencyModuleLevelEditor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/DependencyModules/PopcornFXDependencyModulePropertyEditor.cpp(1): error: Expected PopcornFXDependencyModulePropertyEditor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/DependencyModules/PopcornFXDependencyModuleSettings.cpp(1): error: Expected PopcornFXDependencyModuleSettings.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/EditorHelpers.cpp(1): error: Expected EditorHelpers.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PopcornFXAssetBroker.cpp(1): error: Expected PopcornFXAssetBroker.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PopcornFXEffectEditor.cpp(1): error: Expected PopcornFXEffectEditor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PopcornFXEffectPreviewViewport.cpp(1): error: Expected PopcornFXEffectPreviewViewport.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PopcornFXStyle.cpp(1): error: Expected PopcornFXStyle.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PopcornFXTypeActions.cpp(1): error: Expected PopcornFXTypeActions.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsAttributeList.cpp(1): error: Expected PopcornFXDetailsAttributeList.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsAttributeSamplerActor.cpp(1): error: Expected PopcornFXDetailsAttributeSamplerActor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsAttributeSamplerCurve.cpp(1): error: Expected PopcornFXDetailsAttributeSamplerCurve.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsAttributeSamplerShape.cpp(1): error: Expected PopcornFXDetailsAttributeSamplerShape.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsEffect.cpp(1): error: Expected PopcornFXDetailsEffect.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsEffectAttributes.cpp(1): error: Expected PopcornFXDetailsEffectAttributes.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsEmitterComponent.cpp(1): error: Expected PopcornFXDetailsEmitterComponent.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsSceneComponent.cpp(1): error: Expected PopcornFXDetailsSceneComponent.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/CustomizeDetails/PopcornFXDetailsSettings.cpp(1): error: Expected PopcornFXDetailsSettings.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PropertyCustomization/PopcornFXCustomizationAssetDep.cpp(1): error: Expected PopcornFXCustomizationAssetDep.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PropertyCustomization/PopcornFXCustomizationCollisionFilter.cpp(1): error: Expected PopcornFXCustomizationCollisionFilter.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PropertyCustomization/PopcornFXCustomizationRendererMaterial.cpp(1): error: Expected PopcornFXCustomizationRendererMaterial.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Editor/PropertyCustomization/PopcornFXCustomizationSubRendererMaterial.cpp(1): error: Expected PopcornFXCustomizationSubRendererMaterial.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/HUD/PopcornFXHUDDebug.cpp(1): error: Expected PopcornFXHUDDebug.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/HUD/PopcornFXHUDMemory.cpp(1): error: Expected PopcornFXHUDMemory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/HUD/PopcornFXHUDProfiler.cpp(1): error: Expected PopcornFXHUDProfiler.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/DependencyHelper.cpp(1): error: Expected DependencyHelper.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/FileSystemController_UE.cpp(1): error: Expected FileSystemController_UE.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/ParticleScene.cpp(1): error: Expected ParticleScene.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/PopcornFXProfiler.cpp(1): error: Expected PopcornFXProfiler.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/ResourceHandlerImage_UE.cpp(1): error: Expected ResourceHandlerImage_UE.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/ResourceHandlerMesh_UE.cpp(1): error: Expected ResourceHandlerMesh_UE.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Internal/Startup.cpp(1): error: Expected Startup.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCall.cpp(1): error: Expected DrawCall.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCallSliceHelper.cpp(1): error: Expected DrawCallSliceHelper.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCalls_Billboard.cpp(1): error: Expected DrawCalls_Billboard.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCalls_Light.cpp(1): error: Expected DrawCalls_Light.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCalls_Mesh.cpp(1): error: Expected DrawCalls_Mesh.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/DrawCalls_Ribbon.cpp(1): error: Expected DrawCalls_Ribbon.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/MyRHIStuff.cpp(1): error: Expected MyRHIStuff.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/ParticleDrawer_Sound.cpp(1): error: Expected ParticleDrawer_Sound.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXBillboarderBillboardCS.cpp(1): error: Expected PopcornFXBillboarderBillboardCS.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXBuffer.cpp(1): error: Expected PopcornFXBuffer.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXMeshVertexFactory.cpp(1): error: Expected PopcornFXMeshVertexFactory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXSortComputeShader.cpp(1): error: Expected PopcornFXSortComputeShader.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXVertexFactory.cpp(1): error: Expected PopcornFXVertexFactory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/PopcornFXVertexFactoryShaderParameters.cpp(1): error: Expected PopcornFXVertexFactoryShaderParameters.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/RenderManager.cpp(1): error: Expected RenderManager.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/Render/RendererSubView.cpp(1): error: Expected RendererSubView.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXEmitter.cpp(1): error: Expected PopcornFXEmitter.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXEmitterComponent.cpp(1): error: Expected PopcornFXEmitterComponent.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXSceneActor.cpp(1): error: Expected PopcornFXSceneActor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXSceneComponent.cpp(1): error: Expected PopcornFXSceneComponent.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXSceneProxy.cpp(1): error: Expected PopcornFXSceneProxy.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFX/Private/World/PopcornFXWaitForSceneActor.cpp(1): error: Expected PopcornFXWaitForSceneActor.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXOnDefault/Private/PopcornFXOnDefaultModule.cpp(1): error: Expected PopcornFXOnDefaultModule.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/PopcornFXEditorPlugin.cpp(1): error: Expected PopcornFXEditorPlugin.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/PopcornFXEmitterFactory.cpp(1): error: Expected PopcornFXEmitterFactory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/PopcornFXFileFactory.cpp(1): error: Expected PopcornFXFileFactory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/PopcornFXFileReimportFactory.cpp(1): error: Expected PopcornFXFileReimportFactory.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/PopcornFXFileThumbnailRenderer.cpp(1): error: Expected PopcornFXFileThumbnailRenderer.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/Nodes/PopcornFXNode_DynamicField.cpp(1): error: Expected PopcornFXNode_DynamicField.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/Nodes/PopcornFXNode_GetAttribute.cpp(1): error: Expected PopcornFXNode_GetAttribute.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/Nodes/PopcornFXNode_GetParticleField.cpp(1): error: Expected PopcornFXNode_GetParticleField.h to be first header included.
/home/epic/UnrealEngine-4.16.1-release/Engine/Plugins/PopcornFX/Source/PopcornFXEditor/Private/Nodes/PopcornFXNode_SetAttribute.cpp(1): error: Expected PopcornFXNode_SetAttribute.h to be first header included.
Build canceled.
Makefile:183: recipe for target 'UE4Editor' failed
make: *** [UE4Editor] Error 1

There are no further issues building UE4 with Ubuntu 16.04.2 LTS (x64) if we remove the plugin, the compiler output suggests it's unable to resolve the correct header file order.

Hopefully it's a simple issue with a swift resolution, many thanks in advance.

by intrepideer (150 points)
Have you tried moving the UE4PopcornFXPlugin inside your Project instead of the Engine ?
(So have MyUEProject/Plugins/UE4PopcornFXPlugin , instead of  UnrealEngine/Engine/Plugins/UE4PopcornFXPlugin )
Hi Jordan, thanks for the response.

Unfortunately moving source-only plugins into individual project directories isn't helpful on Linux, no build scripts are provided by default as they are on Windows. It's also important to note building plugins on a per-project basis should be considered a workaround rather than a solution, many projects would want to share plugins without additional source rebuilds.

Are there plans to provide a pre-built binary for Linux rather than source-only?

Many thanks in advance.
We actually test only per-project installation, because the people we work with only use PopcornFX installed in the project. With per-project installation, you can use the official Windows EpicGameLauncher's builds, and only have to distribute/share the project and not the whole engine.

On linux, to generate per project Makefile/kdev/.. and build:

cd UnrealEngine/
./GenerateProjectFiles.sh -project=../path/to/MyProject/MyProject.uproject
cd ../path/to/MyProject
make MyProjectEditor
...


Anyway, we should make installation in Engine work too, so I am looking into fixing it.
Hi Jordan, thanks again for looking into this issue.

We're now able to build the plugin using your instructions (GenerateProjectFiles.sh), once the Unreal Engine project is converted from Blueprints to C++.

Once the per-project limitation is removed (build with Unreal Engine source) will it be possible to use plugin with Blueprint-only projects?

Many thanks again.

1 Answer

0 like 0 dislike

Bug confirmed on v1.4.4 and UE 4.16 when the Plugin is installed in the Engine.
(see comments above)

  • Workaround 1:

Install the PopcornFX Plugin in the Project (as explained in the Plugin's README.md).
Then to generate and build on linux you can:

cd UnrealEngine/
./GenerateProjectFiles.sh -project=../../../path/to/MyProject/MyProject.uproject -game -engine
cd ../path/to/MyProject
make MyProjectEditor
...

  • Workaround 2:

Disable IWYU (Include What You Use), and force old precompiled behavior:
You can git checkout the branch hotfix/quickfix_IWYU_4.16 , ! only tested on UE 4.16 on Linux !

We are currently working on making the Plugin work with IWYU properly, will probably come with a future v1.5.0. (but it might break compatibility < 4.15)

Edit: fix command lines

by Jordan (14.6k points)
...