Cmake:如何仅在存在的情况下强制编译器?

时间:2013-10-08 07:32:03

标签: cmake

我希望Cmake只使用英特尔C ++编译器 。我在这里找到了这个片段,但顾名思义,它迫使Cmake使用英特尔编译器。如果不在场,他们会抱怨。周期。

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

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

2 个答案:

答案 0 :(得分:3)

从CMake内部无法做到这一点。

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

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

答案 1 :(得分: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)

所以在这里,如果您没有英特尔编译器,CMake不会说任何话,但您可以在message("You don't have icc in your PATH")分支中轻松添加else()