Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake:如何仅在编译器存在时强制编译器? 我希望Cmake只使用英特尔C++编译器,如果它存在的话。我在这里找到了这个片段,但顾名思义,它迫使Cmake使用英特尔编译器。如果不在场,他会抱怨的。句号 include(CMakeForceCompiler) CMAKE_FORCE_C_COMPILER(icc "Intel C Compiler") CMAKE_FORCE_CXX_COMPILER(icpc "Intel C++ Compiler")_Cmake - Fatal编程技术网

Cmake:如何仅在编译器存在时强制编译器? 我希望Cmake只使用英特尔C++编译器,如果它存在的话。我在这里找到了这个片段,但顾名思义,它迫使Cmake使用英特尔编译器。如果不在场,他会抱怨的。句号 include(CMakeForceCompiler) CMAKE_FORCE_C_COMPILER(icc "Intel C Compiler") CMAKE_FORCE_CXX_COMPILER(icpc "Intel C++ Compiler")

Cmake:如何仅在编译器存在时强制编译器? 我希望Cmake只使用英特尔C++编译器,如果它存在的话。我在这里找到了这个片段,但顾名思义,它迫使Cmake使用英特尔编译器。如果不在场,他会抱怨的。句号 include(CMakeForceCompiler) CMAKE_FORCE_C_COMPILER(icc "Intel C Compiler") CMAKE_FORCE_CXX_COMPILER(icpc "Intel C++ Compiler"),cmake,Cmake,是否有任何方法可以实现这种行为(理想情况下,如果不存在,则仅向用户显示警告)?这在CMake内部是不可能的 CMake希望用户设置并选择正确的工具链。然后,在第一次配置运行时,CMake执行两个测试,以验证所选编译器是否存在并按预期工作。每次配置只能执行一次此检查,因此CMake中的编译器干净切换始终需要擦除CMakeCache.txt并重新启动新的配置运行 您需要一个外部脚本来选择正确的编译器,然后使用正确的参数调用CMake。以下是我的操作方法: find_program (INTEL_CO

是否有任何方法可以实现这种行为(理想情况下,如果不存在,则仅向用户显示警告)?

这在CMake内部是不可能的

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

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

以下是我的操作方法:

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不会说什么,但是您可以轻松地在
else()
分支中添加
消息(“您的路径中没有icc”)

谢谢你的回答:)