我有一个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)
其他选项通过命令行开关设置(对于x86generator
和buildTarget
)或默认情况下(即在脚本本身中检测到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编译器呢?
答案 0 :(得分:0)
在命令行中,您可以通过环境变量CC
和CXX
指定编译器。我猜你需要正确地准备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搞得更好: