Fake it until you Make it

Well that feels like multiple steps back to get in the exact same place, but this is actually progress.

See what had happened was…

Until discovering KDevelop I spent too much time relying on Eclipse once I configured it to just work. And it did and it does. But eventually I’d like to move away from Eclipse to KDevelop. Meanwhile, I was not able to compile using my other default build system of (GNU) Make and a Makefile.

This is why you “get real” as many developer often suggest. It had been a while since I built to the target device (GameShell) and clearly I added content to the project that didn’t build correctly.

So the basic/real issue here is that the build system using Make was broken.

After trying a lot of other fancier solutions, I decided to whittle down the problem domain to the simplest problem. And also heeding the advice of other developers I did so by ditching the IDE’s altogether, if only temporarily.

I spent a while trying different things just on the command line in vim and directly using cmake, make, g++, gcc, and g++ yesterday but never quite got to the answer. It was mostly just figuring out what didn’t work. Today I ran across a Stack Overflow post where someone was trying to mix .c and .cpp files in their Makefile. I noticed a curious thing that they were able to use g++ instead of gcc to compile their c source code along with c++. So I added a build object for cJSON.c, the source that gave me these errors and it compiled!

~/projects/sdl2-pre-cjson master~5
❯ make                
rm -f ./.depend
g++ -w -MM src/Collision.cpp src/GameObject.cpp src/UIText.cpp src/MusicManager.cpp src/main.cpp src/Game.cpp src/Map.cpp src/ECS/ECS.cpp src/TextureManager.cpp src/Vector2D.cpp src/AssetManager.cpp src/UINineSlice.cpp>>./.depend;
g++    -c -o src/UIText.o src/UIText.cpp
g++    -c -o src/main.o src/main.cpp
g++    -c -o src/Game.o src/Game.cpp
g++    -c -o src/Map.o src/Map.cpp
g++    -c -o src/UINineSlice.o src/UINineSlice.cpp
g++  ./src/Collision.o  ./src/GameObject.o  ./src/UIText.o  ./src/MusicManager.o  ./src/main.o  ./src/Game.o  ./src/Map.o  ./src/ECS/ECS.o  ./src/TextureManager.o  ./src/Vector2D.o  ./src/AssetManager.o  ./src/UINineSlice.o -w -lSDL2 -lSDL2_image -lSDL2_mixer -o sdl2-2d-game-engine

~/projects/sdl2-pre-cjson master~5* 8s
❯ ./sdl2-2d-game-engine 
zsh: segmentation fault (core dumped)  ./sdl2-2d-game-engine

Errr…well at least it compiled. (This error is actually from a previous commit hash that lacked the new offending code. Turns out the error causing the segfault was actually just needing to run a make clean before running make again.

Now compilation and running both work from the Makefile!

Now onward to actually making a game and such…

Et voilà, it’s running on device again!

Leave a Reply

Your email address will not be published. Required fields are marked *