使用gcc

时间:2017-11-14 10:42:49

标签: c debugging gcc clang clion

我试图配置CLion以便我可以使用openMP。在我的Mac上使用默认设置时,编译器就是铿锵声。默认Apple clang不支持openMP。

当我将编译器更改为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 个答案:

答案 0 :(得分:2)

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