Tôi đang cố chạy chương trình OpenMP
đơn giản trong CLion IDE
. Khi tôi chạy nó tôi nhận được một ERROR:Cách thiết lập dự án openMP cơ bản trong CLion
CMakeFiles\openmp_test_clion.dir/objects.a(main.cpp.obj): In function `main':
D:/.../openmp_test_clion/main.cpp:9: undefined reference to 'omp_get_thread_num'
collect2.exe: error: ld returned 1 exit status
Dưới đây là mã của tôi:
#include <stdio.h>
#include <omp.h>
int main()
{
int id;
#pragma omp parallel private(id)
{
id = omp_get_thread_num();
printf("%d: Hello World!\n", id);
}
return 0;
}
Đây là tôi CMakeLists.txt
:
cmake_minimum_required(VERSION 3.6)
project(openmp_test_clion)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(openmp_test_clion ${SOURCE_FILES})
message(STATUS "Checking OpenMP")
find_package(OpenMP)
IF(OPENMP_FOUND)
message("Found OpenMP!)
# add flags for OpenMP
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_SHARED_LINKER_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
ELSE()
message("Missed OpenMP!")
ENDIF()
Dưới đây là màn hình của dãy công cụ của tôi:
Tôi có không có kinh nghiệm với OpenMP
và tôi là lập trình viên mới bắt đầu ở C++
vì vậy hãy cho tôi một chút giải thích cách thiết lập dự án của tôi.
[Câu trả lời] (https://stackoverflow.com/a/12404666/1662425) cho thấy thiết lập tốt hơn hỗ trợ nhiều trình biên dịch, thay vì mã hóa cứng cờ gcc. – tera