Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在Windows下使用cmake生成使用英特尔编译器的Visual Studio项目_Visual Studio_Visual Studio 2012_Cmake_Icc - Fatal编程技术网

Visual studio 如何在Windows下使用cmake生成使用英特尔编译器的Visual Studio项目

Visual studio 如何在Windows下使用cmake生成使用英特尔编译器的Visual Studio项目,visual-studio,visual-studio-2012,cmake,icc,Visual Studio,Visual Studio 2012,Cmake,Icc,我正在用C开发一个跨平台(Linux/Windows)应用程序。我已经厌倦了维护一个可用的Makefile和Visual Studio解决方案/项目,所以我想过渡到cmake。我在两种平台上都使用英特尔编译器 我在Windows上下载了cmake 3.0,在Linux上下载了cmake 2.8(这是ubuntu 12.04存储库中的版本)。在Linux上,一切都进行得很顺利,生成文件也成功。这是一个简单的运行问题:CC=icc-CXX=icc-cmake.. 但是,在Windows上,无论我尝试

我正在用C开发一个跨平台(Linux/Windows)应用程序。我已经厌倦了维护一个可用的Makefile和Visual Studio解决方案/项目,所以我想过渡到cmake。我在两种平台上都使用英特尔编译器

我在Windows上下载了cmake 3.0,在Linux上下载了cmake 2.8(这是ubuntu 12.04存储库中的版本)。在Linux上,一切都进行得很顺利,生成文件也成功。这是一个简单的运行问题:
CC=icc-CXX=icc-cmake..

但是,在Windows上,无论我尝试什么命令,我都无法使用英特尔编译器。输出vcxproj始终使用MSVC编译器

-- 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
我尝试了以下命令:

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
当我将生成器更改为“nmakefiles”时,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)
非常感谢您的帮助

附言

cmake gui的行为与此相同。我选择指定一个不同的本机编译器,给出icc的路径,并获得上述输出


我也尝试过在Windows上使用cmake 2.8,其行为是相同的。

我已经找到了答案,所以我将发布它,以防其他人有同样的问题

解决方案是将这一行添加到
CMakeLists.txt

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

我发现了这一点并将其改写为使用英特尔编译器。< /P>可以在命令行上使用相同的字符串:CGOST-T“英特尔C++编译器XE 14”…N.B.明确地说“这个变量的值不应该被项目代码修改”。对于当前版本的工具集名称是“英特尔C++编译器16”,当使用生成器“NMake Makefiles”时,我遇到了与您相同的问题。但是你的解决方案在我的情况下不起作用。