Conversation
The header is Public/CogImguiConfig.h, but the define spells it CogImGuiConfig.h with a capital G. Windows and case-insensitive macOS volumes resolve it anyway; on a case-sensitive filesystem every translation unit that reaches imgui.h fails with "'CogImGuiConfig.h' file not found".
UnrealHeaderTool names the generated header after its source file, so this one is CogEngineWindow_NetImGui.generated.h. The include asked for NetImgui.generated.h, which only resolves where the filesystem folds case.
These three calls hand a runtime string straight to ImGui::Text, so any percent sequence in a display name or tooltip is interpreted as a conversion. clang rejects it under -Wformat-security, which is an error in an Unreal editor build. Every other Text call in this file already passes "%s" -- these are inside WITH_EDITORONLY_DATA and were missed.
FCogEngineWindow_OutputLog is COGENGINE_API and holds an FCogLogOutputDevice by value, but the device itself is unexported. On Windows the window's implicit constructor is emitted into the DLL and the device's constructor resolves there. clang emits that implicit constructor in the *consumer's* translation unit instead, so a module calling AddWindow<FCogEngineWindow_OutputLog>() fails to link with an undefined FCogLogOutputDevice::FCogLogOutputDevice().
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cog does not currently build for a Mac editor target. These are four independent fixes, one commit each, found while bringing a UE 5.8 project up on macOS arm64 (Apple clang 21). None of them is Mac-specific in nature — they are latent issues that MSVC and case-insensitive filesystems happen to tolerate.
1.
IMGUI_USER_CONFIGnames a header that does not existCogImgui.Build.csdefines it as"CogImGuiConfig.h", but the file isPublic/CogImguiConfig.h— lowercaseg. On a case-sensitive filesystem every translation unit reachingimgui.hfails with'CogImGuiConfig.h' file not found. Every other reference in the plugin already uses the correct spelling.2.
CogEngineWindow_NetImGui.hincludes the wrong generated headerIt asks for
CogEngineWindow_NetImgui.generated.h; UHT names the generated header after its source file, so it emitsCogEngineWindow_NetImGui.generated.h.3. Reflected property text is passed as a format string
Three
ImGui::Text(TCHAR_TO_UTF8(...))calls inCogEngineWindow_Inspector.cpphand a runtime string straight to a printf-style function, so any percent sequence in a display name or tooltip is interpreted as a conversion specifier. clang rejects this under-Wformat-security, which is an error in an Unreal editor build. Every otherTextcall in that file already passes"%s"— these three are insideWITH_EDITORONLY_DATAand appear to have been missed.4.
FCogLogOutputDeviceis not exportedFCogEngineWindow_OutputLogisCOGENGINE_APIand holds anFCogLogOutputDeviceby value, but the device itself is unexported. On Windows the window's implicit constructor is emitted into the DLL and the device's constructor resolves there. clang emits that implicit constructor in the consumer's translation unit instead, so any module callingAddWindow<FCogEngineWindow_OutputLog>()fails to link:Branched from
cb1b435rather than currentmain, which is what my project pins; the two commitsmainis ahead touch onlyCogWidgets.cpp, so this merges cleanly. Verified by building a UE 5.8.2 editor target to a successful link on macOS arm64. I have not rebuilt on Windows — fixes 1, 2 and 4 are inert there, and 3 is the standard"%s"form used elsewhere in the same file.