-
-
Notifications
You must be signed in to change notification settings - Fork 56.5k
4.1.1 (and master) does not compile on macOS with WITH_OPENMP #18478
Copy link
Copy link
Closed
Milestone
Description
System information (version)
- macos 10.15.7
- OpenMP installed with
brew install libompand headers and libraries present in/usr/local/ - Compiler Apple clang 12.0.0
Detailed description
Using this build configuration:
install_opencv() {
(
local version=4.1.1
local archive_name=opencv-$version.tar.gz
wget -N https://github.com/opencv/opencv/archive/$version.tar.gz --output-document $archive_name && \
tar -v -xzf $archive_name && \
cd opencv-$version && \
mkdir -p build && \
cd build && \
cmake $CMAKE_BUILD_FLAGS -DBUILD_LIST=core,imgproc,highgui,calib3d .. \
-DENABLE_PRECOMPILED_HEADERS=OFF\
-DBUILD_features2d=OFF\
-DBUILD_gapi=OFF\
-DBUILD_java_bindings_gen=OFF\
-DBUILD_ml=OFF\
-DBUILD_objdetect=OFF\
-DBUILD_photo=OFF\
-DBUILD_video=OFF\
-DBUILD_videoio=OFF\
-DBUILD_opencv_python_bindings_generator=OFF\
-DBUILD_ZLIB=OFF\
-DBUILD_TIFF=OFF\
-DBUILD_JASPER=OFF\
-DBUILD_JPEG=ON\
-DBUILD_PNG=OFF\
-DBUILD_OPENEXR=OFF\
-DBUILD_WEBP=OFF\
-DBUILD_IPP_IW=OFF\
-DBUILD_ITT=OFF\
-DWITH_AVFOUNDATION=OFF\
-DWITH_CUDA=OFF\
-DWITH_EIGEN=ON\
-DWITH_FFMPEG=OFF\
-DWITH_GSTREAMER=OFF\
-DWITH_VTK=OFF\
-DWITH_GTK=ON\
-DWITH_GTK_2_X=OFF\
-DWITH_IPP=OFF\
-DWITH_JASPER=OFF\
-DWITH_JPEG=ON\
-DWITH_WEBP=OFF\
-DWITH_OPENMP=ON\ # use openmp
-DMKL_WITH_OPENMP=ON\
-DWITH_OPENEXR=OFF\
-DWITH_OPENNI=OFF\
-DWITH_OPENNI2=OFF\
-DWITH_TIFF=OFF\
-DWITH_V4L=OFF\
-DWITH_OPENCLAMDFFT=OFF\
-DWITH_OPENCLAMDBLAS=OFF\
-DWITH_PROTOBUF=OFF\
-DWITH_IMGCODEC_HDR=OFF\
-DWITH_IMGCODEC_SUNRASTER=OFF\
-DWITH_IMGCODEC_PFM=OFF\
-DWITH_QUIRC=OFF\
-DBUILD_opencv_apps=OFF\
-DBUILD_opencv_js=OFF\
-DBUILD_PERF_TESTS=OFF\
-DBUILD_TESTS=OFF\
-DBUILD_JAVA=OFF\
-DBUILD_opencv_python2=OFF\
-DBUILD_opencv_python3=OFF && \
make -j12 install
)
}
Fails to compile since cmake/OpenCVFindFrameworks.cmake uses such code:
# --- OpenMP ---
if(WITH_OPENMP)
find_package(OpenMP)
if(OPENMP_FOUND)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
# missing OpenMP include and/or library dirs like so:
# link_libraries(OpenMP::OpenMP_CXX)
endif()
set(HAVE_OPENMP "${OPENMP_FOUND}")
endif()
which does not bring -I/usr/local/include, -L/usr/local/lib and -lomp into the compile commands, only the flags -Xclang -fopenmp. Even if that were added here, I don't think it fixes the issue for the 3rdparty cmake projects.
You get something like this:
…
[ 2%] Building C object 3rdparty/libjasper/CMakeFiles/libjasper.dir/jas_cm.c.o
[ 2%] Building C object 3rdparty/libjpeg-turbo/CMakeFiles/libjpeg-turbo.dir/src/jcapimin.c.o
[ 2%] Building C object 3rdparty/libwebp/CMakeFiles/libwebp.dir/src/dec/alpha_dec.c.o
[ 2%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/crc32.c.o
/Users/rasmus/Downloads/opencv/build/3rdparty/ippicv/ippicv_mac/iw/src/iw_core.c:44:18: fatal error: 'omp.h' file not found
#include <omp.h> // Use OMP atomics
^~~~~~~
Steps to reproduce
See bash function above.
Installed brew packages before opencv build:
BREW_PACKAGES=(
cmake
pkg-config
doxygen
zmq
yaml-cpp
eigen
clang-format
vtk@8.2
tclap
libomp
libusb
ffmpeg
wget
curl
qt5
tbb
xsimd
xtensor
automake
autoconf
flann
)
brew install ${BREW_PACKAGES[*]}
brew upgrade ${BREW_PACKAGES[*]}
brew link --force vtk@8.2
Issue submission checklist
- I report the issue, it's not a question
- I checked the problem with documentation, FAQ, open issues,
answers.opencv.org, Stack Overflow, etc and have not found solution - I updated to latest OpenCV version and the issue is still there
Reactions are currently unavailable