2013-07-13 16 views
9

OpenMPでコンパイルしようとしています。私CMakeLists.txtが私のファイルシステムをチェックCMakeがOpenMPを見つけられない

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 

find_package(OpenMP REQUIRED)

とCMakeのエラーラインアウトが含まれている、私は/usr/share/cmake-2.8/Modules/FindOpenMP.cmakeしかしopenmpConfig.cmakeまたはopenmp-config.cmake全くないことがわかります。これを解決するために何をする必要がありますか?

答えて

6

OpenMpはパッケージではありません。サポートされている場合は、コンパイラの一部として提供されます。それに応じてCMAKE_C_FLAGSまたはCMAKE_CXX_FLAGSを設定してみてください。例えば、

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")は、gccを使用するとCソースをコンパイルするためにOpenMPをアクティブにします。他のコンパイラでは、最初にコンパイラを検出し、適切なフラグを追加する必要があります。

+2

http://stackoverflow.com/questions/3134660/how-to-apply-different-compiler-options-for-different-compilers-in -cmakeには、CMakeがマクロを使ってフラグがサポートされているかどうかをチェックする面白い解決策がありました。ソリューションの論理的な拡張を並べ替えます。 – JonnyRo

+2

FindOpenMP cmakeモジュールがあります。 http://www.cmake.org/cmake/help/v3.0/module/FindOpenMP.htmlを参照してください。 – iNFINITEi

+0

@GradGuy私はCMake 3.7とclang 4.0を使用していますが、私の 'find_package(OpenMP REQUIRED)'はOpenMPを見つけることができません。 –

20

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() 
+0

ありがとうございます!正確に私が必要なもの:D – Pubudu

+0

これは、MSVS 2017のWindowsでも動作します。 – user2023370

関連する問題