OpenMP не строит / не связывает в macOS Каталина? - PullRequest
1 голос
/ 19 октября 2019

Я пытаюсь построить проект, и у меня есть некоторые проблемы с OpenMP

Это cmake, который я использую:

cmake_minimum_required(VERSION 2.8.6)
project(render LANGUAGES CXX)

link_directories(../core/)
include_directories(../core/)

find_package(DART REQUIRED COMPONENTS gui collision-bullet CONFIG)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
find_package(OpenMP REQUIRED) # Find the package

if (OPENGL_FOUND)
    message("Found OpenGL for Mac OS")
    message("OpenGL for Mac OS, include dir: ${OPENGL_INCLUDE_DIR}")
    message("OpenGL for Mac OS, link libraries: ${OPENGL_gl_LIBRARY}")
else (OPENGL_FOUND)
    message(FATAL_ERROR "OpenGL for Mac OS not found")
    endif()

find_package(PythonLibs REQUIRED)
find_package(Boost COMPONENTS filesystem python37 numpy37)

include_directories(${DART_INCLUDE_DIRS})
include_directories(${OPENGL_INCLUDE_DIR})
include_directories(${GLUT_INCLUDE_DIR})
include_directories(${PYTHON_INCLUDE_DIR})
include_directories(${Boost_INCLUDE_DIRS})

file(GLOB srcs "*.h" "*.cpp")
add_executable(render ${srcs})
target_link_libraries(render ${DART_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${GLUT_LIBRARIES} ${OpenMP_CXX_LIBRARIES} ${OpenMP_C_LIBRARIES} mss)

Это вывод в терминале:

CMake Error at /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/Cellar/cmake/3.15.4/share/cmake/Modules/FindOpenMP.cmake:477 (find_package_handle_standard_args)
  render/CMakeLists.txt:10 (find_package)


-- Configuring incomplete, errors occurred!
See also "/Users/vittorio/Documents/MASS-master/build/CMakeFiles/CMakeOutput.log".
See also "/Users/vittorio/Documents/MASS-master/build/CMakeFiles/CMakeError.log".

Теперь, если я использую следующие опции при выполнении cmake, он успешно завершается:

rm -rf build && mkdir build && cd build && cmake -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp" -DOpenMP_C_LIB_NAMES="omp" -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp -I$(brew --prefix libomp)/include" -DOpenMP_CXX_LIB_NAMES="omp" -DOpenMP_omp_LIBRARY=$(brew --prefix libomp)/lib/libomp.dylib -D Boost_NO_BOOST_CMAKE:BOOL=ON ..

, но при сборке проекта с make -j8 он не может связаться с openmp.

Самый близкий ответ (но он все еще не работает) на мою проблему: Компиляция и связывание с OpenMP с AppleClang на Mac OS X Mojave

Может кто-нибудь помочь мне вэто? любая помощь была бы мне очень признательна!

PS: на случай, если вам интересно, информация о компиляторе

-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
...