2

我有一个 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)

其中其他选项通过命令行开关(forx86generatorbuildTarget)或默认设置(即,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 编译器呢?

4

2 回答 2

0

在命令行上,您可以通过环境变量CCCXX. 我猜您需要正确准备 cmake 命令的环境,并且您不应该更改 CMakeLists.txt 内部结构。

例如

import subprocess
subprocess.Popen('CC=%s CXX=%s cmake ../path/to/src' %('icc','icpc'))
于 2013-04-04T15:52:13.403 回答
0

答案是:

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

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

最好用某种形式的 Visual Studio 编译器运行它,然后用 icprojconverter 搞乱:

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

于 2013-04-04T19:12:06.473 回答