OpenMPでコンパイルしようとしています。私の_CMakeLists.txt
_には次の行が含まれています
find_package(OpenMP REQUIRED)
とCMakeエラー
_CMake Error at /opt/ros/groovy/share/catkin/cmake/catkinConfig.cmake:72 (find_package):
Could not find a configuration file for package openmp.
Set openmp_DIR to the directory containing a CMake configuration file for
openmp. The file will have one of the following names:
openmpConfig.cmake
openmp-config.cmake
_
ファイルシステムを確認すると、_/usr/share/cmake-2.8/Modules/FindOpenMP.cmake
_はありますが、_openmpConfig.cmake
_または_openmp-config.cmake
_はありません。これを修正するには何をする必要がありますか?
OpenMp
はパッケージではありません。サポートされている場合は、コンパイラの一部として提供されます。それに応じて_CMAKE_C_FLAGS
_または_CMAKE_CXX_FLAGS
_を設定してみてください。例えば:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
は、OpenMP
が使用されている場合、C
ソースをコンパイルするためにgcc
をアクティブにします。他のコンパイラの場合、最初にコンパイラを検出してから、適切なフラグを追加する必要があります
CMakeには、2.xバージョンでもFindOpenMPモジュールがあります。 http://www.cmake.org/cmake/help/v3.0/module/FindOpenMP.html を参照してください
だから私はこれをします:
OPTION (USE_OpenMP "Use OpenMP" ON)
IF(USE_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}")
ENDIF()
ENDIF()
iNFINITEiの答えは私にはうまくいきません。私はUbuntuを使用して、OpenCV
静的ライブラリを使用してコードをコンパイルしようとしています。リンクした後、私はこれを手に入れました:
'"/usr/bin/ld:/usr/local/lib/libopencv_core.a(parallel.cpp.o):シンボル' omp_set_dynamic @@ OMP_1.0 '"'への未定義の参照
だから私はiNFINITEiのアプローチを試しました、そして私は持っています:
'/usr/local/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:211でのCMakeエラー(メッセージ):FIND_PACKAGE_HANDLE_STANDARD_ARGS()呼び出しスタックにREQUIRED_VARSが指定されていません(最新の呼び出しが最初):/ usr/local/share/cmake -3.13/Modules/FindOpenMP.cmake:513(find_package_handle_standard_args)CMakeLists.txt:8(FIND_PACKAGE) '
最後に、"-fopenmp=libomp"
をCMAKE_CXX_FLAGS
に追加して、問題を解決しました。