Как сгенерировать проект 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, и поведение такое же.


person niking    schedule 23.12.2014    source источник
comment
У меня такая же проблема, как и у вас, при использовании генератора в качестве файлов Makefiles NMake. Однако в моем случае ваше решение не сработало.   -  person voidMainReturn    schedule 27.01.2016


Ответы (1)


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

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

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

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

person niking    schedule 26.12.2014
comment
Вы можете использовать ту же строку в командной строке: cmake -TIntel C ++ Compiler XE 14.0 ... - person Avi Tevet; 26.08.2015
comment
N.B. в документах однозначно говорится. Значение этой переменной никогда не должно быть изменен кодом проекта. - person imallett; 30.04.2016
comment
Для текущей версии название набора инструментов - Intel C ++ Compiler 16.0. - person Dženan; 05.09.2016
comment
Зеркало ссылки в блоге - person Jiyan Akgül; 21.05.2021