FindOpenMP: Fails using Intel compilers (icl/icx) using CMAKE 3.29.0-rc2
When upgrading CMake from 3.28 to 3.29.0-rc2 I am not able to find OpenMP when using The Intel compilers (icl/icx) on Windows.
The reason seems to be commit 3019af64. I have tried to use CMake 3.29.0-rc2 and just replace the FindOpenMP.cmake file from 3.28 in the CMake installation and it fixes the problem. That commit is the only difference between the two versions.
Steps to reproduce: Using the following CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
project(OpenMPTest LANGUAGES CXX)
message(STATUS "CMAKE_CXX_COMPILER_ID : ${CMAKE_CXX_COMPILER_ID}")
message(STATUS "CMAKE_CXX_COMPILER_VERSION: ${CMAKE_CXX_COMPILER_VERSION}")
message(STATUS "CMAKE_CXX_SIMULATE_ID : ${CMAKE_CXX_SIMULATE_ID}")
find_package(OpenMP REQUIRED)
if(OpenMP_CXX_FOUND)
message(STATUS "OpenMP_CXX_FOUND : ${OpenMP_CXX_FOUND}")
message(STATUS "OpenMP_CXX_VERSION: ${OpenMP_CXX_VERSION}")
message(STATUS "OpenMP_CXX_FLAGS : ${OpenMP_CXX_FLAGS}")
endif()
If I use CMake 3.28 I get the following output:
> cmake -B build-icl -S . -G Ninja -DCMAKE_CXX_COMPILER=icl
-- The CXX compiler identification is Intel 2021.10.0.20230609
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/bin/intel64/icl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_ID : Intel
-- CMAKE_CXX_COMPILER_VERSION: 2021.10.0.20230609
-- CMAKE_CXX_SIMULATE_ID : MSVC
-- Found OpenMP_CXX: -Qopenmp (found version "5.0")
-- Found OpenMP: TRUE (found version "5.0")
-- OpenMP_CXX_FOUND : TRUE
-- OpenMP_CXX_VERSION: 5.0
-- OpenMP_CXX_FLAGS : -Qopenmp
-- Configuring done (18.6s)
-- Generating done (0.0s)
-- Build files have been written to: C:/dev/test/build-icl
> cmake -B build-icx -S . -G Ninja -DCMAKE_CXX_COMPILER=icx
-- The CXX compiler identification is IntelLLVM 2023.2.0 with MSVC-like command-line
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/bin/icx.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_ID : IntelLLVM
-- CMAKE_CXX_COMPILER_VERSION: 2023.2.0
-- CMAKE_CXX_SIMULATE_ID : MSVC
-- Found OpenMP_CXX: -Qiopenmp (found version "5.0")
-- Found OpenMP: TRUE (found version "5.0")
-- OpenMP_CXX_FOUND : TRUE
-- OpenMP_CXX_VERSION: 5.0
-- OpenMP_CXX_FLAGS : -Qiopenmp
-- Configuring done (21.8s)
-- Generating done (0.0s)
-- Build files have been written to: C:/dev/test/build-icx
While Using CMake 3.29.0-rc2 gives the following error:
> cmake -B build-icl -S . -G Ninja -DCMAKE_CXX_COMPILER=icl
-- The CXX compiler identification is Intel 2021.10.0.20230609
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/bin/intel64/icl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_ID : Intel
-- CMAKE_CXX_COMPILER_VERSION: 2021.10.0.20230609
-- CMAKE_CXX_SIMULATE_ID : MSVC
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.29/Modules/FindOpenMP.cmake:581 (find_package_handle_standard_args)
C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package)
CMakeLists.txt:7 (find_package)
-- Configuring incomplete, errors occurred!
> cmake -B build-icx -S . -G Ninja -DCMAKE_CXX_COMPILER=icx
-- The CXX compiler identification is IntelLLVM 2023.2.0 with MSVC-like command-line
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/bin/icx.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_CXX_COMPILER_ID : IntelLLVM
-- CMAKE_CXX_COMPILER_VERSION: 2023.2.0
-- CMAKE_CXX_SIMULATE_ID : MSVC
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.29/Modules/FindOpenMP.cmake:581 (find_package_handle_standard_args)
C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake:859 (_find_package)
CMakeLists.txt:7 (find_package)
-- Configuring incomplete, errors occurred!