2016-04-28 90 views
-1

我有一個非常簡單的OpenMP Hello World程序,因爲這:在OS通過CMake編譯OpenMP程序X

#include <stdio.h> 
#include <omp.h> 

int main() 
{ 
#pragma omp parallel 
    { 
     int id = omp_get_thread_num(); 
     printf("hello, from %d.\n", id); 
    } 
    return 0; 
} 

我可以gcc-5 -fopenmp hello.c -o hello.o

編譯它在我的終端,但我想代碼克利翁,它使用的CMake來組織項目,當我點擊運行按鈕,我會得到一個錯誤

fatal error: 'omp.h' file not found 
#include <omp.h> 

我做的搜索在谷歌,並添加一些東西到我的CMakeLists.txt文件

這是我的CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.3) 
project(openmp) 

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

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fopenmp") 

set(SOURCE_FILES hello.c omp.c) 
add_executable(openmp ${SOURCE_FILES}) 

回答

0

你的代碼是C,而不是C++,所以不是改變CMAKE_CXX_FLAGS,改變CMAKE_C_FLAGS

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp") 

而且你的C編譯器設置爲GCC -5:

set(CMAKE_C_COMPILER /your/path/to/gcc-5) 

要知道gcc-5路徑,請在終端中鍵入which gcc-5

參見:How to specify new gcc path for cmake

+0

感謝您的回答! 我已將此行添加到我的CMakeList文件,但我仍然有這個錯誤 **鏗鏘:錯誤:不支持選項'-fopenmp'** 我知道也許該clion使用默認的gcc,它需要是gcc-5 ,所以你可以告訴我如何修改,使其工作,再次感謝 – GeneGi

+0

非常感謝! – GeneGi

+0

CLion使用CMake設置的GCC。所以如果你使用CMake與GCC 5一致,CLion也會使用它。所以是的,只要按照上面的答案。 – nastasiak2512