remove non-existent function calls
ImGui_ImplOpenGL3_DestroyFontsTexture and
ImGui_ImplOpenGL3_CreateFontsTexture were removed on 04.06.2025
If glm is already a target then no GLM_ENABLE_EXPERIMENTAL define might be specified for it. A more robust way is to define it explicitly
Lets say we have 3 projects: A, B, C. A depends on B and C, both of which use stbi. If stb implementation is not marked as static then you get multiple definition errors during link time because stb implementation symbols are exposed in a compiled library
@nmwsharp This PR fixes compilation/linking errors. Would appreciate your review and merge 😊
Hi! Thanks for submitting this. Pardon the delay.
ImGui_ImplOpenGL3_DestroyFontsTexture
Right now this library uses ImGui 1.91.9b, which looks to be before this change. Next time we bump the dependency I will certainly remove those, but I don't think it makes sense to remove them before bumping the dependency.
GLM_ENABLE_EXPERIMENTAL
It took me a minute to understand this. The problem is related to doing the define in CMake, which we currently do, right? Adding the define to the source directly makes sure our functions compile even if the target was defined elsewhere? I think that makes sense to me, thanks for the fix.
STB_IMAGE_STATIC
Good catch, thanks.
For now I'll remove the ImGUI change so I can merge this PR with the other two.
Hmmmm, note the build failures from the CI. I think to use STB_IMAGE_STATIC we'd need to also switch to including the implementation in every file which uses it, right?
#define STB_IMAGE_STATIC
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
It's been 2 years since I had to think about C++ symbol visibility, so I might be missing something basic here.