transfered from codeberg
This commit is contained in:
53
compile
Executable file
53
compile
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Get the absolute path of the project root (where this script lives)
|
||||
# This ensures the script works even if called from elsewhere
|
||||
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
|
||||
BUILD_DIR="$ROOT_DIR/build"
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 {debug|release|test}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check if an argument was provided
|
||||
if [ -z "$1" ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
TYPE="$1"
|
||||
|
||||
case "$TYPE" in
|
||||
debug|release|test)
|
||||
TARGET_DIR="$BUILD_DIR/$TYPE"
|
||||
|
||||
# Create directory structure if it doesn't exist
|
||||
mkdir -p "$TARGET_DIR"
|
||||
|
||||
echo "--- Entering $TYPE build mode ---"
|
||||
cd "$TARGET_DIR" || exit 1
|
||||
|
||||
# Set CMake build type based on argument
|
||||
# We capitalize the first letter to match CMake conventions
|
||||
if [ "$TYPE" = "debug" ]; then
|
||||
CMAKE_TYPE="Debug"
|
||||
elif [ "$TYPE" = "release" ]; then
|
||||
CMAKE_TYPE="Release"
|
||||
else
|
||||
CMAKE_TYPE="Debug" # Tests usually run in debug mode
|
||||
fi
|
||||
|
||||
# Run CMake and Make
|
||||
cmake -DCMAKE_BUILD_TYPE="$CMAKE_TYPE" ../..
|
||||
|
||||
# If it's the test build, we target 'test_suite', otherwise 'all'
|
||||
if [ "$TYPE" = "test" ]; then
|
||||
make test_suite
|
||||
else
|
||||
make
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user