Как сгенерировать проект Visual Studio, который использует компилятор Intel, используя cmake под Windows

Я разрабатываю кросс-платформенное (Linux/Windows) приложение в C. Мне надоело поддерживать как полезный Makefile, так и решение/проекты Visual Studio, поэтому я хотел перейти к cmake. Я использую компилятор Intel на обеих платформах.

Я загрузил cmake 3.0 в Windows и cmake 2.8 на Linux (он один в репозиториях ubuntu 12.04). В Linux все прошло гладко, и файлы Makefile были сгенерированы успешно. Это было простое управление: CC=icc CXX=icc cmake ...

В Windows, однако, независимо от того, какую команду я пытаюсь, я не могу использовать компилятор Intel. Выходной файл vcxproj всегда использует компилятор MSVC.

Я пробовал следующую команду:

cmake -G "Visual Studio 11 2012 Win64" -D CMAKE_C_COMPILER="C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe" -D CMAKE_CXX_COMPILER="C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe" ..

Вывод:

-- The C compiler identification is MSVC 17.0.61030.0
-- The CXX compiler identification is MSVC 17.0.61030.0
-- Check for working C compiler using: Visual Studio 11 2012 Win64
-- Check for working C compiler using: Visual Studio 11 2012 Win64 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 11 2012 Win64
-- Check for working CXX compiler using: Visual Studio 11 2012 Win64 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done

Когда я меняю генератор на "NMake Makefiles", тогда icc устанавливается как компилятор.

-- The C compiler identification is Intel 14.0.3.20140422
-- The CXX compiler identification is Intel 14.0.3.20140422
-- Check for working C compiler: C:/Program Files (x86)/Intel/Composer XE/bin/intel64/icl.exe

Я тестирую это в довольно базовом проекте только с одним исходным файлом, поэтому мой файл CMakeLists.txt содержит только:

project(dummy_cmake)

add_executable(hellonikola main.c)

Любая помощь очень ценится!

P.S.

cmake-gui ведет себя одинаково. Я выбираю, чтобы указать другой собственный компилятор и указать путь к icc и получить выше выходы.

Я пробовал использовать cmake 2.8 на Windows, а также то же самое.

Ответ 1

Я нашел ответ, поэтому я отправляю его, если у кого-то другая проблема.

Решение заключалось в том, чтобы добавить эту строку в CMakeLists.txt

set(CMAKE_GENERATOR_TOOLSET "Intel C++ Compiler XE 14.0" CACHE STRING "Platform Toolset" FORCE)

Я нашел это в этом блоге и адаптировал его для использования компилятора Intel.