VSCode + Custom Build Script
I've got a bit of free time on my hands for a while. I plan to take up Leadwerks again and come up with a simple project to have fun with.
I use VSCode at work and I don't have a Windows machine at the moment. Codeblocks is a bit dated now and I'm not sure if it has all the features to fit my workflow so I can't use it.
It's a bit fiddly to build C++ apps on VSCode. There's a prescribed method of setting up your C++ project in the official hubs but I don't think those are necessary in my case, I just need a script that builds the project which I have below.
By the way, VSCode website is here: https://code.visualstudio.com/
Have fun.
Save as build.sh in your project's root folder and run using build.sh or build.sh -r for release. Works for Stable version LW and any previous versions(?) - at least v4.5 (archived). BETA branch (4.6?) doesn't seem to build for me, missing Leadwerks.a file.
Disclaimer: not really fully tested for bigger projects? I've only tested this with sample projects that have no additional project folder structure in its Source so I'm not sure if the script will propagate its search for CPP files thoroughly and process each file successfully in bigger projects. Back-up project files before running the script for the first time please.
Updated: 26/02/2020
#!/bin/sh
if [ $1 == "-h" ]; then
echo "Build script is set to DEBUG by default. Set -r in first argument of the script to build for release.";
exit 1;
fi
if [ $1 != "" ] && [ $1 != "-r" ] && [ $1 != "-h" ]; then
echo "Type build.sh -h to see brief help description.";
exit 1;
fi
debugFlags='-g -DDEBUG -D_DEBUG';
debugLibPath='Debug';
PROJECT_PATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
LEADWERKS_PATH=~/.local/share/Steam/steamapps/common/Leadwerks
declare a compiledFiles;
declare a includedFilePaths;
if [ $1 == "-r" ]; then
debugFlags='';
debugLibPath='Release';
fi
truncate -s 0 $PROJECT_PATH/build.log
echo "Leadwerks Path: $LEADWERKS_PATH"
echo "Project Path: $PROJECT_PATH"
echo "Compiling source..."
if [ ! -d "$PROJECT_PATH/Compilations" ]; then
mkdir $PROJECT_PATH/Compilations;
fi
if [ ! -d "$PROJECT_PATH/Compilations/$debugLibPath" ]; then
mkdir $PROJECT_PATH/Compilations/$debugLibPath;
fi
for f in $(find $PROJECT_PATH/Source -name '*.h' ); do
includedFilePaths+=("-I $(dirname "${f}")")
done
includedFilesJoined=$(printf "%s " "${includedFilePaths[@]}")
includedFilesJoined="-${includedFilesJoined:1}"
for f in $(find $PROJECT_PATH/Source -name '*.cpp' ); do
originalSourcePath=$PROJECT_PATH/Source;
compilationsPath=$PROJECT_PATH/Compilations/$debugLibPath;
compiledFilePath=${f/.cpp/'.o'};
compiledFilePath=${compiledFilePath/$originalSourcePath/$compilationsPath};
mkdir -p $(dirname "${compiledFilePath}")
g++ -std=c++0x $debugFlags -w -fexceptions -msse3 -DDG_DISABLE_ASSERT -DZLIB \
-DPLATFORM_LINUX -D_NEWTON_STATIC_LIB -DFT2_BUILD_LIBRARY -DOPENGL \
-Dunix -D__STEAM__ -D_POSIX_VER -D_POSIX_VER_64 -DDG_THREAD_EMULATION \
-D_STATICLIB -DDG_USE_THREAD_EMULATION -DGL_GLEXT_PROTOTYPES -DLEADWERKS_3_1 \
-DLUA_USE_LINUX -D_GLIBCXX_USE_CXX11_ABI=1 -D_CUSTOM_JOINTS_STATIC_LIB -fPIC -O2 -std=c++0x \
$includedFilesJoined \
-I $LEADWERKS_PATH/Include/Libraries/VHACD/src/VHACD_Lib/inc \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dMath \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgNewton \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dContainers \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgCore \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgTimeTracker \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dgPhysics \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/sdk/dCustomJoints \
-I $LEADWERKS_PATH/Include/Libraries/tolua++-1.0.93/include \
-I $LEADWERKS_PATH/Include/Libraries/lua-5.1.4 \
-I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include \
-I $LEADWERKS_PATH/Include/Libraries/enet-1.3.1/include \
-I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DebugUtils/Include \
-I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Detour/Include \
-I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourCrowd/Include \
-I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/DetourTileCache/Include \
-I $LEADWERKS_PATH/Include/Libraries/RecastNavigation/Recast/Include \
-I $LEADWERKS_PATH/Include/Libraries/libvorbis/include \
-I $LEADWERKS_PATH/Include/Libraries/NewtonDynamics/packages/thirdParty/timeTracker \
-I $LEADWERKS_PATH/Include/Libraries/libvorbis/lib \
-I $LEADWERKS_PATH/Include/Libraries/libogg/include \
-I $LEADWERKS_PATH/Include \
-I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5 \
-I $LEADWERKS_PATH/Include/Libraries/zlib-1.2.5/contrib/minizip \
-I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype \
-I $LEADWERKS_PATH/Include/Libraries/freetype-2.4.7/include/freetype/config \
-I $LEADWERKS_PATH/Include/Libraries/LuaJIT/dynasm \
-I $LEADWERKS_PATH/Include/Libraries/glew-1.6.0/include \
-c $f -o $compiledFilePath;
compiledFiles+=($compiledFilePath)
done
compiledFilesJoined=$(printf "%s " "${compiledFiles[@]}")
compiledFilesJoined="/${compiledFilesJoined:1}"
echo "Building project...";
g++ -o $PROJECT_PATH/${PWD##*/} $compiledFilesJoined -s "$LEADWERKS_PATH/Library/Linux/$debugLibPath/Leadwerks.a" -ldl \
-lopenal -lGL -lGLU "$LEADWERKS_PATH/Library/Linux/libluajit.a" $PROJECT_PATH/libsteam_api.so \
-lX11 -lXext -lXrender -lXft -lpthread -lcurl "$LEADWERKS_PATH/Library/Linux/libopenvr_api.so"
echo "Build complete. See build.log for result summary."
About the game: I'm kind of disappointed with the Action RPGs released recently. I want to give the genre a shot, present my own interpretation of how it should look like? Dark, medieval, less electric, modest if not rare use of glow shaders... maybe?
-
2
4 Comments
Recommended Comments