Initial commit
This commit is contained in:
commit
fb17f39bb1
15 changed files with 932 additions and 0 deletions
119
ch
Executable file
119
ch
Executable file
|
@ -0,0 +1,119 @@
|
|||
#!/bin/zsh
|
||||
|
||||
########################################################
|
||||
## edit thease variables to match your project structure
|
||||
########################################################
|
||||
BUILD_DEBUG_FOLDER="build/debug"
|
||||
BUILD_RELEASE_FOLDER="build/release"
|
||||
DEFAULT_BUILD_TYPE="d" # "d" for debug and "r" for release
|
||||
EXECUTABLE_NAME="{{project-name}}" # should be the name of the executable beeing built, this is used for the run action
|
||||
|
||||
COLOR="\033[1;33m" # https://stackoverflow.com/a/5947802
|
||||
|
||||
#######################################################################################
|
||||
## this is where the script starts you should not need to edit anything below this line
|
||||
#######################################################################################
|
||||
|
||||
NC="\033[0m" # No Color
|
||||
|
||||
if [ -z "$1" ]
|
||||
then
|
||||
echo "No action specified"
|
||||
echo "run cmakehelper.sh help for more info"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
"init" | "-i" | "--init")
|
||||
SCRIPT_PATH=$(realpath $0)
|
||||
cp -f $SCRIPT_PATH ./cmakehelper.sh
|
||||
echo "Initialized cmakehelper.sh edit the variables at the top of the script to match your project structure"
|
||||
exit 0
|
||||
;;
|
||||
"help" | "-h" | "--help")
|
||||
echo "Possible actions are:"
|
||||
echo "c - clean project"
|
||||
echo "g - generate cmake files"
|
||||
echo "b - build project"
|
||||
echo "r - run project"
|
||||
echo "s - strip executable"
|
||||
echo ""
|
||||
echo "actions can be chained so gbr will first run generate then build and then run"
|
||||
echo ""
|
||||
echo "second argument is the build type, possible values are d or debug and r or release"
|
||||
echo "if no build type is specified then DEFAULT_BUILD_TYPE is used"
|
||||
echo "build type is required for all actions (accept if you have the same folder for bouth build and release then its only needed for build action)"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -z "$2" ]
|
||||
then
|
||||
BUILD_TYPE=$DEFAULT_BUILD_TYPE
|
||||
else
|
||||
BT=$(echo $2 | tr '[:upper:]' '[:lower:]')
|
||||
if [[ $BT == "d" || $BT == "debug" ]]; then
|
||||
BUILD_TYPE="d"
|
||||
elif [[ $BT == "r" || $BT == "release" ]]; then
|
||||
BUILD_TYPE="r"
|
||||
else
|
||||
echo "unknown build type $2"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo() {
|
||||
command echo -e "${COLOR}$@${NC}"
|
||||
}
|
||||
|
||||
ARG=$1
|
||||
for (( i=0; i<${#ARG}; i++ )); do
|
||||
case ${ARG:$i:1} in
|
||||
"c")
|
||||
echo "cleaning project"
|
||||
if [[ $BUILD_TYPE == "d" ]]; then
|
||||
rm -rf $BUILD_DEBUG_FOLDER
|
||||
else
|
||||
rm -rf $BUILD_RELEASE_FOLDER
|
||||
fi
|
||||
;;
|
||||
"g")
|
||||
echo "generating cmake files"
|
||||
if [[ $BUILD_TYPE == "d" ]]; then
|
||||
mkdir -p $BUILD_DEBUG_FOLDER
|
||||
cmake -S . -B $BUILD_DEBUG_FOLDER -DCMAKE_BUILD_TYPE=Debug
|
||||
else
|
||||
mkdir -p $BUILD_RELEASE_FOLDER
|
||||
cmake -S . -B $BUILD_RELEASE_FOLDER -DCMAKE_BUILD_TYPE=Release
|
||||
fi
|
||||
;;
|
||||
"b")
|
||||
echo "building project"
|
||||
if [[ $BUILD_TYPE == "d" ]]; then
|
||||
cmake --build $BUILD_DEBUG_FOLDER
|
||||
else
|
||||
cmake --build $BUILD_RELEASE_FOLDER
|
||||
fi
|
||||
;;
|
||||
"r")
|
||||
echo "running project"
|
||||
if [[ $BUILD_TYPE == "d" ]]; then
|
||||
./$BUILD_DEBUG_FOLDER/$EXECUTABLE_NAME
|
||||
else
|
||||
./$BUILD_RELEASE_FOLDER/$EXECUTABLE_NAME
|
||||
fi
|
||||
;;
|
||||
"s")
|
||||
echo "stripping executable"
|
||||
if [[ $BUILD_TYPE == "d" ]]; then
|
||||
strip -s $BUILD_DEBUG_FOLDER/$EXECUTABLE_NAME -o "$BUILD_DEBUG_FOLDER/$EXECUTABLE_NAME-stripped"
|
||||
else
|
||||
strip -s $BUILD_RELEASE_FOLDER/$EXECUTABLE_NAME -o "$BUILD_RELEASE_FOLDER/$EXECUTABLE_NAME-stripped"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "unknown action ${1:$i:1}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
Loading…
Add table
Add a link
Reference in a new issue