2014-12-23 12 views
11

Zajmuję się tworzeniem aplikacji wieloplatformowej (Linux/Windows) w C. Mam już dość utrzymywania zarówno użytecznych Makefile i Visual Rozwiązania studyjne/projekty, więc chciałem przejść do cmake. Używam kompilatora Intel na obu platformach.Jak wygenerować projekt Visual Studio, który używa kompilatora Intel przy użyciu cmake pod Windows

Pobrałem program cmake 3.0 dla systemu Windows i cmake 2.8 dla systemu Linux (jest to jeden z repozytoriów Ubuntu 12.04). W systemie Linux wszystko poszło gładko, a pliki Makefile zostały pomyślnie wygenerowane. To była prosta sprawa z uruchomieniem: CC=icc CXX=icc cmake ...

W systemie Windows, niezależnie od tego, jakie polecenie wypróbuję, nie mogę użyć kompilatora Intel. Wyjście vcxproj zawsze używa kompilatora MSVC.

Próbowałem następujące polecenie:

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" .. 

Wyjście jest:

-- 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 

Kiedy zmienić generator "nmake Makefile", a następnie ICC jest ustawiony jako kompilatora.

-- 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 

Jestem testowania to na dość podstawowym projektem, tylko z jednego pliku źródłowego, więc mój plik CMakeLists.txt zawiera tylko:

project(dummy_cmake) 

add_executable(hellonikola main.c) 

Każda pomoc jest mile widziana!

P.S.

cmake-gui zachowuje się tak samo. Wybieram, aby określić inny rodzimy kompilator i podać ścieżkę do icc i uzyskać również powyższe wyniki.

Próbowałem również przy użyciu cmake 2.8 na Windows, a zachowanie jest takie samo.

+0

Mam taki sam problem jak ty, gdy używasz generatora jako "Make Make NMake". Twoje rozwiązanie nie działa jednak w moim przypadku. – tejas

Odpowiedz

9

Znalazłem odpowiedź, więc zamieszczam ją na wypadek, gdyby ktoś miał ten sam problem.

Rozwiązaniem było dodać tę linię do CMakeLists.txt

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

Znalazłem się on this blog i dostosować go do korzystania z kompilatora Intel.

+4

Możesz użyć tego samego ciągu znaków w wierszu poleceń: cmake -T "Intel C++ Compiler XE 14.0" ... –

+0

N.B. [docs] (https://cmake.org/cmake/help/v3.1/variable/CMAKE_GENERATOR_TOOLSET.html) mówią jednoznacznie "Wartość tej zmiennej nigdy nie powinna być modyfikowana przez kod projektu." – imallett

+0

Dla obecnej wersji zestawu narzędzi nazwa to "Intel C++ Compiler 16.0" –

Powiązane problemy