我怎样才能在Windows上通过Python以编程方式configurationCMake的编译器?

我有一个Python构build脚本,我正在使用它来构build一些通过Windows上的CMakeconfiguration的项目。 以前,我们使用MSVC来build立这些项目,一切都很好。 我想通过这些python脚本尝试将ICCjoin到构build当中。 如果需要,我可以直接在UI中select本机编译器,但我宁愿以编程方式执行所有操作。

问题是,无论是语法错误,还是只关注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目录中,确保所有iccvariables都已正确configuration,并且可以在命令行上键入icl并确认它在path中。

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

我也试过运行:

 set(CMAKE_C_COMPILER_INIT icl) set(CMAKE_CXX_COMPILER_INIT icl) 

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

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

也给我一个语法错误。

那么我怎样才能以编程方式设置C / CXX编译器从一个python脚本调用cmake?

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

例如

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

答案是:

ICC不能在Windows上使用CMake,所以不要打扰。

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

使用某种形式的visual studio编译器运行它,然后用icprojconverter弄得一团糟:

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