我正在尝试用CMake制作一个Visual Studio解决方案来编译最新版本的aseprite并且CMake一直给我:
No CMAKE_C_COMPILER could be found.
No CMAKE_CXX_COMPILER could be found.
Run Code Online (Sandbox Code Playgroud)
我已经下载了GCC,我正在使用Visual Studio 2015.
我正在学习本教程:
我是微控制器领域的新手.我需要移植一个IDE,它正在为AVR微控制器编译程序,以便为ARM微控制器编译程序.我刚刚将编译器从AVR替换为ARM,并添加了一些选项.以下是命令:
\ARM-GCC\bin\arm-none-eabi-gcc -O0 -ffunction-sections -Wall -std=gnu99 -mfloat-abi=soft
-Wa,-adhlns="$@.lst" -fmessage-length=0 -mcpu=cortex-m0 -mthumb -g3 -gdwarf-2 -Wl,
--gc-sections -o <Dir_name>\Build_Files\Blink_arm.cpp.elf <Dir_name>\Build_Files\Blink_arm.cpp.o <Dir_name>\Build_Files\core.a
-L<Dir_name>\Build_Files -lm
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我得到以下错误:
tools/arm-gcc/bin/../lib/gcc/arm-none-eabi/4.6.2\libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text+0x18): undefined reference to `_exit'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我可以获得一些关于这个错误的帮助,以及如何解决它.而且我也不知道命令行中的那些选项指定了什么.
有没有办法检查cmake在失败的运行中正在做什么?例如,我有一个程序取决于libbacktrace,我可以链接到gcc foo.c -lbacktrace.但是当我写一个CMakeLists.txt喜欢的
cmake_minimum_required(VERSION 2.8)
find_library (BACKTRACE_LIBRARY backtrace)
message (BACKTRACE_LIBRARY=${BACKTRACE_LIBRARY})
Run Code Online (Sandbox Code Playgroud)
和打字cmake <path>,打印出来BACKTRACE_LIBRARY=BACKTRACE_LIBRARY-NOTFOUND.
我该如何找出问题所在?cmake在放弃查找libbacktrace之前执行了哪些命令?它正在执行任何事情吗?在autoconf中,命令都记录在其中config.log,但CMakeOutput.log在这种情况下是空白的.同样,cmake --trace只回显CMakeLists.txt一堆系统cmake文件之后的内容,在这种情况下这是无用的.
请注意,我不是在寻找一种方法来进行这种特殊的find_library工作调用- 这只是一个例子.我的问题是:我有一个没有按预期工作的CMakeLists.txt; 有哪些工具可以帮助我弄清楚它失败的地点和原因?
如何强迫它保持像临时工CMakeFiles/cmTC_66ca1.dir/link.txt或CMakeFiles/cmTC_66ca1.dir/testCCompiler.c.obj?
有一个错误
C编译器无法编译简单的测试程序
但是单独启动命令所需的所有文件都已消失.分析这个很难.
我正在尝试使用 cmake 进行一些交叉编译。有些很容易使用互联网上的所有示例,我设法在 Linux(x86 和 ARM)、Windows 和 Android 上交叉编译我的库。但现在我想在自定义平台上进行。
我需要实现的流程:
但 Cmake 正在测试我的自定义 C/C++ 库中的符号,这使得我的库无法编译。我遇到的错误是 cmake 某些版本的 GLIBCXX 和 CXXABI (没有 C 问题),但不是全部。
有没有办法让 cmake 可以接受它?
编辑:
我尝试使用:
set(CMAKE_C_COMPILER_WORKS TRUE)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
Run Code Online (Sandbox Code Playgroud)
与:
include(CMakeForceCompiler)
...
cmake_force_c_compiler(${ENV_PATH}/bin/${CC})
cmake_force_cxx_compiler(${ENV_PATH}/bin/${CXX})
Run Code Online (Sandbox Code Playgroud)
但 cmake 仍在检查符号。