如何在Windows上通过Python以编程方式为CMake配置编译器?

时间:2013-04-04 06:59:12

标签: windows cmake icc

我有一个python构建脚本,我用来构建一些通过Windows上的CMake配置的项目。以前,我们使用MSVC来构建这些项目,一切都很好。我想通过这些python脚本尝试将ICC现在整合到构建中。如有必要,我可以直接在UI中选择本机编译器,但我宁愿以编程方式完成所有操作。

问题是,它没有出现语法错误,或者只是没有注意cmake选项。

我可以设置:

"CMAKE_CXX_COMPILER:PATH":"C:/Program Files (x86)/Intel/Composer XE 2013/bin/intel64/icl.exe",
"CMAKE_C_COMPILER:PATH":"C:/Program Files (x86)/Intel/Composer XE 2013/bin/intel64/icl.exe"

那个cmakeItems数组的一部分然后被送入这一代:

generate(x86Generator, cmakeItems, osName, buildTarget)

其他选项通过命令行开关设置(对于x86generatorbuildTarget)或默认情况下(即在脚本本身中检测到osName)。

在尝试任何操作之前,我从命令行提示符运行此操作

iclvars intel64

在icc bin目录中,以确保正确配置所有icc变量,并且我可以在命令行上键入icl并确认它在路径中。

运行上述内容意味着C编译器仍然是默认的msvc编译器。

我也尝试过跑步:

set(CMAKE_C_COMPILER_INIT icl)
set(CMAKE_CXX_COMPILER_INIT icl)

但是这给了我icl部分的语法错误。我认为这可能是一个路径问题,但在做:

set(CMAKE_C_COMPILER_INIT "C:\Program Files (x86)\Intel\Composer XE 2013\bin\intel64\icl")
set(CMAKE_CXX_COMPILER_INIT "C:\Program Files (x86)\Intel\Composer XE 2013\bin\intel64\icl")

也给我一个语法错误。

那么如何从调用cmake的python脚本中以编程方式设置C / CXX编译器呢?

2 个答案:

答案 0 :(得分:0)

在命令行中,您可以通过环境变量CCCXX指定编译器。我猜你需要正确地准备cmake命令的环境,你不应该改变CMakeLists.txt内部。

E.g。

import subprocess
subprocess.Popen('CC=%s CXX=%s cmake ../path/to/src' %('icc','icpc'))

答案 1 :(得分:0)

答案是:

ICC不适用于Windows上的CMake,所以不要打扰。

http://www.cmake.org/Bug/view.php?id=6929

使用某种形式的visual studio编译器运行它然后使用icprojconverter搞得更好:

http://software.intel.com/en-us/articles/ICProjConvert100