#!/bin/bash # Default options BUILD_DIR="build" CMAKE_GENERATOR="Unix Makefiles" BUILD_TYPE="Release" CMAKE_OPTIONS="$CMAKE_OPTIONS" # Create default configs if [ ! -d "./.localconfig" ] then mkdir ".localconfig" touch ".localconfig/default" echo "#!/bin/bash" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Default configuration for configure (is always sourced)" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# CMake generator" >> ".localconfig/default" echo "CMAKE_GENERATOR=\"Unix Makefiles\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Build directory and build type" >> ".localconfig/default" echo "BUILD_DIR=\"build\"" >> ".localconfig/default" echo "BUILD_TYPE=\"Release\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Installation directory" >> ".localconfig/default" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=../install\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Build static libraries" >> ".localconfig/default" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Enable examples" >> ".localconfig/default" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_EXAMPLES:BOOL=ON\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Enable documentation" >> ".localconfig/default" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_DOCS:BOOL=ON\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Disable tests" >> ".localconfig/default" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_TESTS:BOOL=OFF\"" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# CMake and environment variables (e.g., search paths for external libraries)" >> ".localconfig/default" echo "" >> ".localconfig/default" echo "# Qt" >> ".localconfig/default" echo "#export CMAKE_PREFIX_PATH=\"\${CMAKE_PREFIX_PATH}:/opt/Qt5.2.1/5.2.1/gcc_64/\"" >> ".localconfig/default" touch ".localconfig/debug" echo "#!/bin/bash" >> ".localconfig/debug" echo "" >> ".localconfig/debug" echo "# Configuration for debug builds" >> ".localconfig/debug" echo "" >> ".localconfig/debug" echo "# Build directory and build type" >> ".localconfig/debug" echo "BUILD_DIR=\"\${BUILD_DIR}-debug\"" >> ".localconfig/debug" echo "BUILD_TYPE=\"Debug\"" >> ".localconfig/debug" touch ".localconfig/pack" echo "#!/bin/bash" >> ".localconfig/pack" echo "" >> ".localconfig/pack" echo "# Configuration for creating packages" >> ".localconfig/pack" echo "" >> ".localconfig/pack" echo "# Installation directory" >> ".localconfig/pack" echo "CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=/usr\"" >> ".localconfig/pack" echo "" >> ".localconfig/pack" echo "# Enable self-contained installation" >> ".localconfig/pack" echo "#CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_SELF_CONTAINED:BOOL=ON\"" >> ".localconfig/pack" echo "" >> ".localconfig/pack" echo "# Enable all components for the package" >> ".localconfig/pack" echo "CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_EXAMPLES:BOOL=ON\"" >> ".localconfig/pack" echo "CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_DOCS:BOOL=ON\"" >> ".localconfig/pack" echo "CMAKE_OPTIONS=\"\${CMAKE_OPTIONS} -DOPTION_BUILD_TESTS:BOOL=OFF\"" >> ".localconfig/pack" echo "Default configuration has been written to .localconfig" echo "Please review and adjust the configuration, then run again" echo "" echo " ./configure $@" exit fi # Read local default options if [ -f "./.localconfig/default" ] then . ./.localconfig/default fi # Parse command line arguments for ARG in "$@" do # Read in configuration for that command-line argument CONFIGFILE="./.localconfig/$ARG" if [ -f "./.localconfig/$ARG" ] then . "./.localconfig/$ARG" elif [ -f "$HOME/.localconfig/$ARG" ] then . "$HOME/.localconfig/$ARG" else echo "Configuration \"$ARG\" not found (searched in ./.localconfig and ~/.localconfig)" fi done if [ "$CMAKE_GENERATOR_OVERRIDE" != "" ] then echo "Override CMAKE_GENERATOR to $CMAKE_GENERATOR_OVERRIDE" CMAKE_GENERATOR="$CMAKE_GENERATOR_OVERRIDE" fi if [ -n "$BUILD_DIR_PREFIX" ]; then BUILD_DIR="${BUILD_DIR_PREFIX}-${BUILD_DIR}" fi # Configure build echo "Configuring in \"$BUILD_DIR\"" echo "" # Create build directory if [ ! -d "$BUILD_DIR" ] then mkdir -p "$BUILD_DIR" fi # Configure project PREVIOUS_DIR=$(pwd) pushd $BUILD_DIR echo cmake -G "$CMAKE_GENERATOR" "-DCMAKE_BUILD_TYPE=$BUILD_TYPE" $CMAKE_OPTIONS "$PREVIOUS_DIR" cmake -G "$CMAKE_GENERATOR" "-DCMAKE_BUILD_TYPE=$BUILD_TYPE" $CMAKE_OPTIONS "$PREVIOUS_DIR" if [ $? == 0 ] then echo "" echo "Project configured. To build the project, use"; echo "" echo " cmake --build $BUILD_DIR" else echo "" echo "Configuration failed."; fi popd