Skip to content

4.1.1 (and master) does not compile on macOS with WITH_OPENMP #18478

@themightyoarfish

Description

@themightyoarfish
System information (version)
  • macos 10.15.7
  • OpenMP installed with brew install libomp and 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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions