2014-12-23 10 views
11

Sto sviluppando un'applicazione multipiattaforma (Linux/Windows) in C. Mi sono stancato di gestire sia un Makefile utilizzabile che il Visual Studio soluzione/progetti quindi volevo passare a cmake. Sto usando Intel Compiler su entrambe le piattaforme.Come generare un progetto di Visual Studio che utilizza Intel Compiler utilizzando cmake sotto Windows

Ho scaricato cmake 3.0 su Windows e cmake 2.8 su Linux (è quello in repository di ubuntu 12.04). Su Linux tutto è andato liscio e i Makefile sono stati generati con successo. Era una questione semplice di esecuzione: CC=icc CXX=icc cmake ...

Su Windows, tuttavia, indipendentemente dal comando che provo, non posso utilizzare Intel Compiler. L'output vcxproj utilizza sempre il compilatore MSVC.

Ho provato il seguente comando:

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

Il risultato è:

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

Quando cambio il generatore a "NMake Makefiles" quindi ICC è impostato come il compilatore.

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

sto testando questo su un progetto piuttosto semplice, con un solo file sorgente, in modo mio file CMakeLists.txt contiene solo:

project(dummy_cmake) 

add_executable(hellonikola main.c) 

Ogni aiuto è molto apprezzato!

P.S.

cmake-gui si comporta allo stesso modo. Seleziono per specificare un compilatore nativo diverso e dare il percorso a icc e ottenere gli output di cui sopra pure.

Ho provato a usare cmake 2.8 anche su Windows e il comportamento è lo stesso.

+0

Ho lo stesso problema riscontrato quando si utilizza il generatore come "Makefile NMake". La tua soluzione non ha funzionato nel mio caso però. – tejas

risposta

9

Ho trovato la risposta quindi la sto postando nel caso in cui qualcun altro abbia lo stesso problema.

La soluzione era quella di aggiungere questa linea alla CMakeLists.txt

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

Ho trovato questo on this blog e adattato in modo da utilizzare il compilatore Intel.

+4

È possibile utilizzare la stessa stringa sulla riga di comando: cmake -T "Intel C++ Compiler XE 14.0" ... –

+0

N.B. i [documenti] (https://cmake.org/cmake/help/v3.1/variable/CMAKE_GENERATOR_TOOLSET.html) dicono inequivocabilmente "Il valore di questa variabile non dovrebbe mai essere modificato dal codice del progetto." – imallett

+0

Per la versione corrente il nome del toolset è "Intel C++ Compiler 16.0" –

Problemi correlati