You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.9 KiB
76 lines
1.9 KiB
#! /usr/bin/env bash |
|
|
|
name=$1 |
|
cmake_version=$2 |
|
c_standard=$3 |
|
|
|
if [ -z $name ] |
|
then |
|
echo "Name must be specified" |
|
echo "" |
|
echo "./cgen.sh <name> [cmake version] [C Standard]" |
|
return -1 |
|
fi |
|
|
|
if [ -z $cmake_version ] |
|
then |
|
echo "No CMake version supplied...defaulting to 3.15" |
|
cmake_version="3.15" |
|
fi |
|
|
|
if [ -z $c_standard ] |
|
then |
|
echo "No C Standard supplied...defaulting to 99" |
|
c_standard="99" |
|
fi |
|
|
|
mkdir $name |
|
mkdir $name/src |
|
mkdir $name/include |
|
|
|
cmake_config=$name/CMakeLists.txt |
|
|
|
touch $cmake_config |
|
|
|
|
|
echo "cmake_minimum_required(VERSION $cmake_version)" >> $cmake_config |
|
echo "project($name)" >> $cmake_config |
|
echo "set (CMAKE_C_STANDARD $c_standard)" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "file(GLOB SOURCE \${PROJECT_SOURCE_DIR}/src/*.c)" >> $cmake_config |
|
echo "file(GLOB INCLUDE \${PROJECT_SOURCE_DIR}/include/*.h)" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "include_directories(\${PROJECT_SOURCE_DIR}/include)" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "# Controls debug printing based on the compiled binary mode - check with \#ifdef DEBUG_BUILD" >> $cmake_config |
|
echo "IF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config |
|
echo "message(\"-- Configuring debug build...\")" >> $cmake_config |
|
echo "add_compile_definitions(DEBUG_BUILD)" >> $cmake_config |
|
echo "ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)" >> $cmake_config |
|
echo "" >> $cmake_config |
|
echo "add_executable($name \${SOURCE} \${INCLUDE})" >> $cmake_config |
|
|
|
sample_file=$name/src/main.c |
|
|
|
echo "#include <stdio.h>" >> $sample_file |
|
echo "" |
|
echo "" |
|
echo "int main(int argc, char **argv)" >> $sample_file |
|
echo "{" >> $sample_file |
|
echo " printf(\"Hello, world!\\n\");" >> $sample_file |
|
echo " return 0;" >> $sample_file |
|
echo "}" >> $sample_file |
|
echo "" >> $sample_file |
|
|
|
git --version 2>&1 >/dev/null |
|
GIT_IS_AVAILABLE=$? |
|
|
|
if [ $GIT_IS_AVAILABLE -eq 0 ] |
|
then |
|
git init $name |
|
fi |
|
|
|
echo "Created project $name."
|
|
|