CMake 的 find_package(OpenMP) 在使用 clang-12 时找不到 OpenMP
CMake's find_package(OpenMP) cannot find OpenMP when using clang-12
我目前正在尝试使用 cmake
查找 OpenMP。
下面是我的CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
set(CMAKE_C_STANDARD 11)
set(GCC_COMPILE_FLAGS -Wall -Werror -Wvla -O0)
SET(CMAKE_BUILD_TYPE Debug)
# Find 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}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
我正在使用 Ubuntu 20.04 并且我安装了 libomp-dev
,如下所示:
libomp-dev is already the newest version (1:10.0-50~exp1).
当我将 gcc
设置为我的编译器时,cmake
可以轻松找到 OpenMP。
但是,当我通过指定以下 cmake
标志使用 clang-12
作为我的编译器时:
-DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12
我从 cmake
收到以下“找不到 OpenMP 错误”:
CMake Error at cmake/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenMP_C
我应该如何设置我的 CMakeLists.txt
文件,以便在使用 clang
作为我的编译器时可以找到 OpenMP?
正如@Tsyvarev 指出的那样,由于我安装了 libomp-dev
版本 10
,如果我使用 clang-10
.[=18,CMake
将能够找到 OpenMP =]
因此,为了让我在 clang-12
中使用 OpenMP,我必须确保安装了 libomp-dev
版本 12,我使用以下 shell 命令进行了安装:
sudo apt -y install libomp-12-dev
现在,当我使用 clang-12
作为编译器时,CMake 可以轻松找到 OpenMP。
我目前正在尝试使用 cmake
查找 OpenMP。
下面是我的CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
set(CMAKE_C_STANDARD 11)
set(GCC_COMPILE_FLAGS -Wall -Werror -Wvla -O0)
SET(CMAKE_BUILD_TYPE Debug)
# Find 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}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
我正在使用 Ubuntu 20.04 并且我安装了 libomp-dev
,如下所示:
libomp-dev is already the newest version (1:10.0-50~exp1).
当我将 gcc
设置为我的编译器时,cmake
可以轻松找到 OpenMP。
但是,当我通过指定以下 cmake
标志使用 clang-12
作为我的编译器时:
-DCMAKE_C_COMPILER=/usr/bin/clang-12 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-12
我从 cmake
收到以下“找不到 OpenMP 错误”:
CMake Error at cmake/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenMP_C
我应该如何设置我的 CMakeLists.txt
文件,以便在使用 clang
作为我的编译器时可以找到 OpenMP?
正如@Tsyvarev 指出的那样,由于我安装了 libomp-dev
版本 10
,如果我使用 clang-10
.[=18,CMake
将能够找到 OpenMP =]
因此,为了让我在 clang-12
中使用 OpenMP,我必须确保安装了 libomp-dev
版本 12,我使用以下 shell 命令进行了安装:
sudo apt -y install libomp-12-dev
现在,当我使用 clang-12
作为编译器时,CMake 可以轻松找到 OpenMP。