#! /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 [cmake version] [C Standard]" exit -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 "" >> $cmake_config echo "set (CMAKE_C_STANDARD $c_standard)" >> $cmake_config echo "" >> $cmake_config echo "# The following lines enable compile_commands.json and dump it in the root of the project" >> $cmake_config echo "# in order to allow YouCompleteMe to provide completion. You can delete these lines if your" >> $cmake_config echo "# editor does not need/use \`compile_commands.json\`" >> $cmake_config echo "" >> $cmake_config echo "SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)" >> $cmake_config echo "" >> $cmake_config echo "IF(EXISTS \"\${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json\")" >> $cmake_config echo " EXECUTE_PROCESS(COMMAND \${CMAKE_COMMAND} -E copy_if_different" >> $cmake_config echo " \${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json" >> $cmake_config echo " \${CMAKE_CURRENT_SOURCE_DIR}/compile_commands.json" >> $cmake_config echo " )" >> $cmake_config echo "ENDIF()" >> $cmake_config echo "#-------- END YOUCOMPLETEME SECTION --------#" >> $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 " >> $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."