我试图配置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;
}
答案 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")