初学Cmake遇到的错误(Windows系统):is not able to compile a simple test program.\nIt fails

1. 问题

使用 cmake 进行交叉编译时遇到了 is not able to compile a simple test program 的问题,这个情况发生在使用 CMAKE_TOOLCHAIN_FILE 指定交叉编译文件时。

初学Cmake遇到的错误(Windows系统):is not able to compile a simple test program.\nIt fails_第1张图片

2. 解决方法

(1)第一种方法

通过查看 .\CMake\share\cmake-3.17\Modules\CMakeTestCCompiler文件,可以发现如果指定了 CMAKE_C_COMPILER_FORCED=ON,那么 CMAKE 就不会检测 C 编译器是否可用,也就不会产生上述问题了。这个 cmake 变量的意思是告诉 cmake "编译器是可用的,无需检测"。这个方法大家可以参考cmake:is not able to compile a simple test program - 知乎 (zhihu.com)

他这个是在Linux系统上我在Windows上试了但没有作用不知道是什么原因所以这里给出只作为参考。

初学Cmake遇到的错误(Windows系统):is not able to compile a simple test program.\nIt fails_第2张图片

(2)第二种方法

我在试过第一种方法后又看了第二篇博客CMake中遇到“is not able to compile a simple test program“问题分析_fengbingchun的博客-CSDN博客

我看到了下面这段话

然后我打开CMakeTestCCompiler.cmake这个文件又看到这段代码,结合方法一我想可能就是这个if(NOT CMAKE_C_COMPILER_WORKS)下面的代码哪里逻辑错误没通过验证导致的,所以我就索性把下面这一整段代码注释掉了。
 

if(NOT CMAKE_C_COMPILER_WORKS)
  PrintTestCompilerResult(CHECK_FAIL "broken")
  file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
    "Determining if the C compiler works failed with "
    "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
  string(REPLACE "\n" "\n  " _output "${__CMAKE_C_COMPILER_OUTPUT}")
    "is not able to compile a simple test program.\nIt fails "
    "with the following output:\n  ${_output}\n\n"
    "CMake will not be able to correctly generate this project."
else()
  if(C_TEST_WAS_RUN)
    PrintTestCompilerResult(CHECK_PASS "works")
    file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
      "Determining if the C compiler works passed with "
      "the following output:\n${__CMAKE_C_COMPILER_OUTPUT}\n\n")
  endif()

如下图:

初学Cmake遇到的错误(Windows系统):is not able to compile a simple test program.\nIt fails_第3张图片

之后果然是成功了

初学Cmake遇到的错误(Windows系统):is not able to compile a simple test program.\nIt fails_第4张图片

你可能感兴趣的:(windows,c++,c语言)