本文主要是介绍初学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 指定交叉编译文件时。
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上试了但没有作用不知道是什么原因所以这里给出只作为参考。
(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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!