1

我希望 Cmake在存在时才使用英特尔 C++ 编译器。我在这里找到了这个片段,但是,顾名思义,它强制 Cmake 使用英特尔编译器。如果不在场,会抱怨。时期。

include(CMakeForceCompiler)
CMAKE_FORCE_C_COMPILER(icc "Intel C Compiler")
CMAKE_FORCE_CXX_COMPILER(icpc "Intel C++ Compiler")

有没有办法实现这种行为(理想情况下,如果不存在,向用户显示警告)?

4

2 回答 2

3

这在 CMake 内部是不可能的。

CMake 期望用户设置和选择正确的工具链。然后在第一次配置运行时,CMake 会执行几个测试来验证所选编译器是否存在并按预期工作。每次配置只能执行一次此检查,因此从 CMake 中干净地切换编译器始终需要擦除 CMakeCache.txt 并重新启动新的配置运行。

您将需要一个外部脚本来选择正确的编译器,然后使用正确的参数调用 CMake。

于 2013-10-08T07:47:52.037 回答
0

这是我的做法:

find_program (INTEL_COMPILER icc)
if (INTEL_COMPILER)
  include (CMakeForceCompiler)
  cmake_force_c_compiler (icc "Intel C Compiler")
  cmake_force_cxx_compiler (icpc "Intel C++ Compiler")
endif (INTEL_COMPILER)

所以在这里,如果你没有 Intel 编译器,CMake 什么都不会说,但是你可以很容易地message("You don't have icc in your PATH")else()分支中添加一个!

于 2014-06-19T17:22:44.367 回答