Skip to content

Instantly share code, notes, and snippets.

@gilbertfrancois
Last active January 14, 2019 15:51
Show Gist options
  • Save gilbertfrancois/9c7b49ef4ad7f44fd44159ecadf61a24 to your computer and use it in GitHub Desktop.
Save gilbertfrancois/9c7b49ef4ad7f44fd44159ecadf61a24 to your computer and use it in GitHub Desktop.
Updates ofxOpenCv to current OpenCV version from homebrew. The compiled homebrew version includes more modules (e.g. DNN) and is more up-to-date.
#!/usr/bin/env bash
# Author: Gilbert Francois Duivesteijn
# Date: Aug 2018
# Updated: Jan 2019
# Version: 1.3
# Platform: macOS
# License: Apache
#
# Tested for OpenCV 3.4.5
#
# Updates ofxOpenCv to more recent OpenCV version.
# Download and extract:
# opencv-[version].tar.gz to /tmp/opencv-[version]
# opencv_contrib-[version].tar.gz to /tmp/opencv_contrib-[version]
# then run this script. The package will be installed temporarely in /tmp/opencv. If you like it
# to be installed somewhere else, change the INSTALL_PREFIX parameter.
### BEGIN USER SETTINGS
#
# Set your openframeworks folder locations here...
OPENFRAMEWORKS_DIR=${HOME}/Development/git/of_v0.10.1_osx_release
# Set your opencv source folders here...
OPENCV_SRC=/tmp/opencv-3.4.5
OPENCV_CONTRIB_SRC=/tmp/opencv_contrib-3.4.5/modules
INSTALL_PREFIX=/tmp/opencv
OSX_MIN_SDK_VER=10.9
#
### END USER SETTINGS
## SETTINGS
OPENCV_BUILD=${OPENCV_SRC}/build
## Clean build and target folders
rm -Rf ${OPENCV_BUILD}
mkdir ${OPENCV_BUILD}
rm -Rf ${INSTALL_PREFIX}
mkdir ${INSTALL_PREFIX}
## Start build
cd ${OPENCV_BUILD}
echo "[.] Running cmake"
echo "--------------------"
cmake -D CMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
-D CMAKE_OSX_DEPLOYMENT_TARGET=10.9 \
-D ENABLE_FAST_MATH=OFF \
-D CMAKE_CXX_FLAGS="-fvisibility-inlines-hidden -stdlib=libc++ -O3 -fPIC -arch x86_64 -mmacosx-version-min=${OSX_MIN_SDK_VER}" \
-D CMAKE_C_FLAGS="-fvisibility-inlines-hidden -stdlib=libc++ -O3 -fPIC -arch x86_64 -mmacosx-version-min=${OSX_MIN_SDK_VER}" \
-D CMAKE_BUILD_TYPE="Release" \
-D BUILD_SHARED_LIBS=OFF \
-D OPENCV_EXTRA_MODULES_PATH:PATH=${OPENCV_CONTRIB_SRC} \
-D OPENCV_ENABLE_NONFREE:BOOL="1" \
-D BUILD_DOCS=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_FAT_JAVA_LIB=OFF \
-D BUILD_JASPER=OFF \
-D BUILD_PACKAGE=OFF \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_python=OFF \
-D BUILD_opencv_apps=OFF \
-D BUILD_opencv_videoio=OFF \
-D BUILD_JPEG=OFF \
-D BUILD_PNG=OFF \
-D WITH_1394=OFF \
-D WITH_CARBON=OFF \
-D WITH_JPEG=OFF \
-D old-jpeg:BOOL="1" \
-D WITH_PNG=OFF \
-D WITH_FFMPEG=OFF \
-D WITH_OPENCL=OFF \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_GIGEAPI=OFF \
-D WITH_CUDA=OFF \
-D WITH_CUFFT=OFF \
-D WITH_JASPER=OFF \
-D WITH_LIBV4L=OFF \
-D WITH_IMAGEIO=OFF \
-D WITH_IPP=OFF \
-D WITH_OPENNI=OFF \
-D WITH_QT=OFF \
-D WITH_QUICKTIME=OFF \
-D WITH_V4L=OFF \
-D WITH_PVAPI=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_EIGEN=OFF \
-D BUILD_TESTS=OFF \
-D WITH_VTK=OFF \
-D BUILD_PERF_TESTS=OFF \
..
echo "[.] Running make"
echo "--------------------"
make clean
make -j8
echo "[.] Running make install"
echo "--------------------"
make install
cp 3rdparty/lib/*.a ${INSTALL_PREFIX}/lib
# OpenCV folder (for brew installations, it is in /usr/local/opt/opencv)
OPENCV_DIR=${INSTALL_PREFIX}
# Temporary build location
BUILD_DIR="/tmp/ofxOpenCV-build"
echo "[.] Creating temporary build folder..."
mkdir -pv $BUILD_DIR
mkdir -pv $BUILD_DIR/lib
echo "[.] Copying headers and libraries..."
cp -R ${INSTALL_PREFIX}/include $BUILD_DIR
cp -R ${INSTALL_PREFIX}/lib/*.a $BUILD_DIR/lib/
echo "[.] Building single static library file..."
outputlist=$BUILD_DIR/lib/lib*.a
libtool -static $outputlist -o $BUILD_DIR/lib/opencv.a
ls -lh $BUILD_DIR/lib/opencv.a
echo "[.] Removing old library and headers in ofxOpenCv..."
rm -Rf $OPENFRAMEWORKS_DIR/addons/ofxOpenCv/libs/opencv/include
rm -Rf $OPENFRAMEWORKS_DIR/addons/ofxOpenCv/libs/opencv/lib/osx/*
echo "[.] Copying new library and headers in ofxOpenCv..."
cp -R $BUILD_DIR/include $OPENFRAMEWORKS_DIR/addons/ofxOpenCv/libs/opencv/include
cp -R $BUILD_DIR/lib/opencv.a $OPENFRAMEWORKS_DIR/addons/ofxOpenCv/libs/opencv/lib/osx/
echo "[.] Cleaning up..."
rm -Rf $BUILD_DIR/lib
rm -Rf $BUILD_DIR/include
echo "[.] Done!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment