2017-11-14 10 views
0

OpenMP를 사용할 수 있도록 CLion을 구성하려고합니다. 내 Mac에서 기본 설정을 사용하면 컴파일러가 작동하지 않습니다. 기본 Apple clang은 openMP를 지원하지 않습니다.gcc를 사용할 때 CLion 디버거가 작동하지 않습니다.

컴파일러를 GCC로 변경하면 디버거가 중단 점에서 중단되지 않습니다. 프로그램은 컴파일 된 파일을 실행할 때처럼 실행됩니다.

아래의 CMakeLists.txt 파일은 CLion 디버거와 완벽하게 작동합니다. 컴파일러 플래그를 주석 처리를 제거하면 디버거가 중단 점을 무시합니다.

cmake_minimum_required(VERSION 3.8) 
project(CLionTest) 

set(CMAKE_C_STANDARD 99) 
#set(CMAKE_C_COMPILER /usr/local/bin/gcc-7) 
#set(CMAKE_C_FLAGS -fopenmp) 
#set(CMAKE_C_FLAGS_DEBUG "-D_DEBUG") 

set(MAIN main.c) 
add_executable(CLionTest ${MAIN}) 

add_custom_target(CLionTestMake COMMAND make all WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) 

어떻게 수정합니까?

툴체인 설정 : CMake 실행 파일 : Bundeled CMake 3.8.2 디버거 : 번들 LLDB 3.9.0

을 main.c :

#include <stdio.h> 
#include <unistd.h> 
#ifdef _OPENMP 
    #include <omp.h> 
#endif 

int main() { 
    printf("Hello, World!\n"); 

    #pragma omp parallel 
    { 
     #ifdef _OPENMP 
      int size = omp_get_num_threads(); 
      int rank = omp_get_thread_num(); 
     #else 
      int rank = 0; 
      int size = 1; 
     #endif 
     printf("%d/%d\n", rank, size); 
    }; 

    return 0; 
} 

답변

1
set(CMAKE_C_FLAGS -fopenmp) 
set(CMAKE_C_FLAGS_DEBUG "-D_DEBUG") 

당신은 대신 C 플래그를 교체 디버깅 심볼을 생성하는 내장 된 -g 옵션을 삭제합니다. 대신

set(CMAKE_C_FLAGS "${CMAKE_CFLAGS} -fopenmp") 
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG") 
+0

고맙습니다. 나는 또한 잊어 버린 "-g"플래그를 추가해야만했다. –

+1

@MagnusWang : 이상하게도, 이론 상으로는 -DCMAKE_BUILD_TYPE = Debug로 컴파일 할 때'-g'가 이미 기본 변수에 포함되어 있어야한다. –