Skip to content

Instantly share code, notes, and snippets.

@audrow
Last active September 28, 2023 13:47
Show Gist options
  • Save audrow/30c8c5cb1d2103614c1b674f640515ae to your computer and use it in GitHub Desktop.
Save audrow/30c8c5cb1d2103614c1b674f640515ae to your computer and use it in GitHub Desktop.
Build ROS 2 packages with GCC or Clang
#!/bin/bash
if [ -z ${1+x} ];
then
echo "Exiting - Please enter a package"
exit 1
fi
if [ -z ${2+x} ];
then
MODE="select";
else
MODE=$2;
fi
case "$MODE" in
"up-to" | "u" )
PACKAGE_CMD="--packages-up-to"
;;
"above" | "a" )
PACKAGE_CMD="--packages-above-and-dependencies"
;;
"s" | "select" | * )
PACKAGE_CMD="--packages-select"
;;
esac
if [ -z ${3+x} ];
then
COMPILER="gcc";
else
COMPILER=$3;
fi
case "$COMPILER" in
"clang" | "c" )
BUILD_DIR="build_clang"
INSTALL_DIR="install_clang"
export CC=clang
export CXX=clang++
;;
"gcc" | "g" )
BUILD_DIR="build"
INSTALL_DIR="install"
export CC=gcc
export CXX=g++
;;
esac
rm -rf $(echo "${BUILD_DIR}/$1 ${INSTALL_DIR}/$1")
BUILD_INSTALL_DIRS="--build-base ${BUILD_DIR} --install-base {INSTALL_DIR}"
colcon build --cmake-force-configure --build-base ${BUILD_DIR} --install-base ${INSTALL_DIR} $PACKAGE_CMD $1 \
&& colcon test --build-base ${BUILD_DIR} --install-base ${INSTALL_DIR} --packages-select $1 \
&& colcon test-result --test-result-base ${BUILD_DIR}
exit 0
#!/bin/bash
if [ -z ${1+x} ];
then
echo "Exiting - Please enter a package"
exit 1
fi
if [ -z ${2+x} ];
then
MODE="select";
else
MODE=$2;
fi
case "$MODE" in
"up-to" | "u" )
PACKAGE_CMD="--packages-up-to"
;;
"above" | "a" )
PACKAGE_CMD="--packages-above-and-dependencies"
;;
"s" | "select" | * )
PACKAGE_CMD="--packages-select"
;;
esac
if [ -z ${3+x} ];
then
COMPILER="gcc";
else
COMPILER=$3;
fi
case "$COMPILER" in
"clang" | "c" )
BUILD_DIR="build_clang"
INSTALL_DIR="install_clang"
export CC=clang
export CXX=clang++
;;
"gcc" | "g" )
BUILD_DIR="build"
INSTALL_DIR="install"
export CC=gcc
export CXX=g++
;;
esac
rm -rf $(echo "${BUILD_DIR}/$1 ${INSTALL_DIR}/$1")
BUILD_INSTALL_DIRS="--build-base ${BUILD_DIR} --install-base {INSTALL_DIR}"
colcon build --cmake-force-configure --build-base ${BUILD_DIR} --install-base ${INSTALL_DIR} $PACKAGE_CMD $1 \
&& colcon test --build-base ${BUILD_DIR} --install-base ${INSTALL_DIR} --packages-select $1 \
&& colcon test-result --test-result-base ${BUILD_DIR}
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment