【问题标题】:Issues when building C++ using CMake with Intel oneApi使用 CMake 和 Intel oneApi 构建 C++ 时出现的问题
【发布时间】:2023-02-03 14:38:15
【问题描述】:

我在我的库中使用了 boost 的 float128 包装器,因此无法更改编译器。

Intel's developer guide 之后,我将 find_package(IntelDPCPP REQUIRED) 添加到我的 CMakeLists.txt 并在 VS 2022 终端上运行了 cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icx -GNinja。我收到以下错误消息

 Found package configuration file:

    C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/IntelDPCPP/IntelDPCPPConfig.cmake

  but it set IntelDPCPP_FOUND to FALSE so package "IntelDPCPP" is considered
  to be NOT FOUND.  Reason given by package:

  Unsupported compiler family and compiler icx!!

任何有类似问题的人都可以帮忙吗?

编辑:正如@Botje 在此处所建议的与此案例相关的输出信息

IntelDPCPPConfig.cmake(84): string(COMPARE EQUAL ${CMAKE_CXX_COMPILER} nocmplr )
IntelDPCPPConfig.cmake(85): if(nocmplr)
IntelDPCPPConfig.cmake(93): if(NOT x${CMAKE_CXX_COMPILER_ID} STREQUAL xClang AND NOT x${CMAKE_CXX_COMPILER_ID} STREQUAL xIntelLLVM )
IntelDPCPPConfig.cmake(95): set(IntelDPCPP_FOUND False )

【问题讨论】:

  • 建议您使用 --trace 运行 CMake 和/或阅读 IntelDPCPPConfig.cmake 文件以找出它失败的原因。
  • 谢谢@Botje 我相应地编辑了问题
  • “nocmplr”听起来配置与您的输入和/或环境不一致

标签: c++ visual-studio cmake intel-oneapi


【解决方案1】:

这是一个已知问题,将在 OneAPI 2023.1 版本中修复。
您可以尝试颠倒 find_package 和项目的顺序或删除 CMakeLists.txt 中的 find_package(IntelDPCPP REQUIRED)。因为 CMake 在调用 project() 时识别并设置所有与编译器相关的变量。
此外,您可以使用以下命令在 CMakeLists.txt 中为 DPC++ 编译器设置编译器选项。

set(CMAKE_CXX_COMPILER dpcpp)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多