setup: added basic cmake project structure
Added cmake build instructions for app, lib and test. Included Qt via environment variable QT_DIR. Included CxxTest via environment variable CXX_TEST_DIR. Added scripts for setup, syncing master and publishing features. Added dlls for QT on Windows.
This commit is contained in:
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
|
||||
SUCCESS="\033[32mSuccess:\033[00m"
|
||||
|
||||
# Enter masterproject directory
|
||||
MY_PATH=`dirname "$0"`
|
||||
cd $MY_PATH/..
|
||||
|
||||
# Remove folders and contents
|
||||
rm -rf build
|
||||
rm -rf lib
|
||||
rm -rf bin/Debug
|
||||
rm -rf bin/Release
|
||||
|
||||
echo $SUCCESS "clean complete"
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Determine path to script
|
||||
MY_PATH=`dirname "$0"`
|
||||
|
||||
cd $MY_PATH/..
|
||||
|
||||
# Build and run target
|
||||
make -C build/Debug "$1" && bin/Debug/"$1"
|
||||
Executable
+100
@@ -0,0 +1,100 @@
|
||||
#!/bin/sh
|
||||
|
||||
ABORT="\033[31mAbort:\033[00m"
|
||||
SUCCESS="\033[32mSuccess:\033[00m"
|
||||
INFO="\033[33mInfo:\033[00m"
|
||||
|
||||
echo $INFO "Checking index"
|
||||
|
||||
# check clean index
|
||||
if [[ -n $(git diff HEAD) ]]
|
||||
then
|
||||
echo $ABORT "You have uncommited changes."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BRANCH_NAME=$(git symbolic-ref -q --short HEAD)
|
||||
PUBLISH_BRANCH_NAME=_publish_"$BRANCH_NAME"_
|
||||
|
||||
echo $INFO "Checking branch $BRANCH_NAME"
|
||||
|
||||
# check if on branch
|
||||
if [ -z $BRANCH_NAME ]
|
||||
then
|
||||
echo $ABORT "You are not on any branch."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if on master
|
||||
if [ $BRANCH_NAME == "master" ]
|
||||
then
|
||||
echo $ABORT "You are on master. Use this script only from a feature branch."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git checkout -q master
|
||||
git remote update &>/dev/null
|
||||
|
||||
echo $INFO "Checking master"
|
||||
|
||||
# check if master is up to date
|
||||
if [[ -n $(git diff origin/master) ]]
|
||||
then
|
||||
echo $ABORT "Your master is not up-to-date. Run 'sync.sh' to update your master, then run 'git rebase master' to update branch $BRANCH_NAME."
|
||||
git checkout -q $BRANCH_NAME
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MASTER_HEAD_COMMIT=$(git rev-parse HEAD)
|
||||
BASE_COMMIT=$(git merge-base $BRANCH_NAME master)
|
||||
|
||||
git checkout -q $BRANCH_NAME
|
||||
|
||||
BRANCH_HEAD_COMMIT=$(git rev-parse HEAD)
|
||||
|
||||
# check if feature has commits
|
||||
if [ $BRANCH_HEAD_COMMIT == $MASTER_HEAD_COMMIT ]
|
||||
then
|
||||
echo $ABORT "Your feature branch has no commits."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check if feature is not behind master
|
||||
if [ $BASE_COMMIT != $MASTER_HEAD_COMMIT ]
|
||||
then
|
||||
echo $ABORT "Your feature branch is behind master. Use 'git rebase master' to update your feature branch."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# switch to temporary branch for squashing
|
||||
git checkout -q -b $PUBLISH_BRANCH_NAME
|
||||
|
||||
echo $INFO "Squashing commits"
|
||||
git reset --soft $BASE_COMMIT
|
||||
git commit
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
git checkout -q $BRANCH_NAME
|
||||
git branch -q -D $PUBLISH_BRANCH_NAME
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $INFO "Rebasing on master"
|
||||
git checkout -q master
|
||||
git rebase -q $PUBLISH_BRANCH_NAME
|
||||
git branch -q -d $PUBLISH_BRANCH_NAME
|
||||
|
||||
echo $INFO "Uploading to origin master"
|
||||
git push origin master
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
git reset --hard -q HEAD^
|
||||
git checkout -q $BRANCH_NAME
|
||||
echo $ABORT "Pushing to origin master has failed, there are new remote changes. Run 'sync.sh' to update your master, then run 'git rebase master' to update branch $BRANCH_NAME."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $SUCCESS "Published branch $BRANCH_NAME successfully"
|
||||
exit 0
|
||||
Executable
+69
@@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
ABORT="\033[31mAbort:\033[00m"
|
||||
ALERT="\033[31mAlert:\033[00m"
|
||||
SUCCESS="\033[32mSuccess:\033[00m"
|
||||
INFO="\033[33mInfo:\033[00m"
|
||||
|
||||
BRANCH_NAME=$(git symbolic-ref -q --short HEAD)
|
||||
|
||||
# check if on branch
|
||||
if [ -z $BRANCH_NAME ]
|
||||
then
|
||||
echo $ABORT "You are not on any branch."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# switch to master
|
||||
echo $INFO "Switching to master"
|
||||
|
||||
git checkout -q master
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo $ABORT "Switching to master failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# check clean index
|
||||
echo $INFO "Checking index"
|
||||
|
||||
if [[ -n $(git diff HEAD) ]]
|
||||
then
|
||||
echo $ABORT "You have uncommited changes on master."
|
||||
git checkout -q "$BRANCH_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# fetch remote changes
|
||||
echo $INFO "Fetching changes"
|
||||
|
||||
git fetch -q origin master
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo $ABORT "Fetching from origin master failed."
|
||||
git checkout -q "$BRANCH_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $(git diff origin/master) ]]
|
||||
then
|
||||
echo $SUCCESS "Your master is already up-to-date."
|
||||
git checkout -q "$BRANCH_NAME"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# rebase master to origin/master
|
||||
git rebase -q origin/master
|
||||
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo $ALERT "Rebasing on master caused conflicts. This should never happen. Follow the instructions above to resolve them then use 'git push origin master' to update the remote."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git checkout -q "$BRANCH_NAME"
|
||||
|
||||
echo $SUCCESS "Updated master"
|
||||
exit 0
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Determine path to script
|
||||
MY_PATH=`dirname "$0"`
|
||||
|
||||
cd $MY_PATH/..
|
||||
|
||||
# Build and run target
|
||||
make -C build/Release "$1" && bin/Release/"$1"
|
||||
+51
-4
@@ -1,9 +1,56 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Define commit message template:
|
||||
ABORT="\033[31mAbort:\033[00m"
|
||||
SUCCESS="\033[32mSuccess:\033[00m"
|
||||
INFO="\033[33mInfo:\033[00m"
|
||||
|
||||
# Determine current platform
|
||||
PLATFORM='unknown'
|
||||
if [ "$(uname)" == "Darwin" ]; then
|
||||
PLATFORM='MacOS'
|
||||
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
|
||||
PLATFORM='Linux'
|
||||
elif [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
|
||||
PLATFORM='Windows'
|
||||
fi
|
||||
|
||||
# Enter masterproject directory
|
||||
MY_PATH=`dirname "$0"`
|
||||
cd $MY_PATH/..
|
||||
|
||||
# git settings
|
||||
echo $INFO "install git settings"
|
||||
|
||||
git config commit.template .git_commit_template.txt
|
||||
|
||||
# Enable git commandline colors:
|
||||
git config color.ui true
|
||||
cp .git_pre_commit_hook.sh .git/hooks/pre-commit
|
||||
|
||||
echo "setup complete"
|
||||
|
||||
# Create Debug and Release folders
|
||||
echo $INFO "create build folders"
|
||||
|
||||
mkdir -p build
|
||||
mkdir -p lib
|
||||
mkdir -p bin/Debug
|
||||
mkdir -p bin/Release
|
||||
|
||||
# Copy necessary dynamic libraries to bin folder
|
||||
if [ $PLATFORM == "Windows" ]; then
|
||||
echo $INFO "copy dynamic libraries"
|
||||
cp -u setup/dynamic_libraries/windows/Debug/* bin/Debug
|
||||
cp -u setup/dynamic_libraries/windows/Release/* bin/Release
|
||||
fi
|
||||
|
||||
# Setup both Debug and Release configuration
|
||||
if [ $PLATFORM == "Linux" ] || [ $PLATFORM == "MacOS" ]; then
|
||||
mkdir -p build/Debug
|
||||
mkdir -p build/Release
|
||||
|
||||
echo $INFO "run cmake with Debug configuration"
|
||||
cd build/Debug && cmake -DCMAKE_BUILD_TYPE="Debug" ../..
|
||||
|
||||
echo $INFO "run cmake with Release configuration"
|
||||
cd ../Release && cmake -DCMAKE_BUILD_TYPE="Release" ../..
|
||||
fi
|
||||
|
||||
echo $SUCCESS "setup complete"
|
||||
|
||||
Reference in New Issue
Block a user