首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cygwin或MinGW中使用带有AVR工具链的CMake

在Cygwin或MinGW中使用带有AVR工具链的CMake
EN

Stack Overflow用户
提问于 2015-01-27 20:33:03
回答 1查看 2.2K关注 0票数 5

我目前正在尝试获得一个工具链设置,以便我可以从CLion构建一个AVR项目。

我的出发点是this,具体地说,就是Blink示例。问题是,它以及现有的AVR示例的CMake都是基于Linux的系统。

我所尝试的是安装WinAVR来获取可执行文件。我修改了CMakeList.txt,使程序名包含以下内容:

代码语言:javascript
复制
set(AVRCPP   "C:/WinAVR-20100110/bin/avr-g++")
set(AVRC     "C:/WinAVR-20100110/bin/avr-gcc")
set(AVRSTRIP "C:/WinAVR-20100110/bin/avr-strip")
set(OBJCOPY  "C:/WinAVR-20100110/bin/avr-objcopy")
set(OBJDUMP  "C:/WinAVR-20100110/bin/avr-objdump")
set(AVRSIZE  "C:/WinAVR-20100110/bin/avr-size")
set(AVRDUDE  "C:/WinAVR-20100110/bin/avrdude")
set(AVRAS  "C:/WinAVR-20100110/bin/avr-as")

在使用Cygwin环境时,CMake可以毫不费力地找到我的编译器,但当我尝试构建项目时,却收到了Linux格式的参数。

代码语言:javascript
复制
C:/WinAVR-20100110/bin/avr-gcc.exe -o CMakeFiles/cmTryCompileExec420260872.dir/testCCompiler.c.obj -c /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp/testCCompiler.c
avr-gcc.exe: /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp/testCCompiler.c: No such file or directory

有没有办法让CMake以一种它可以使用的格式来传递avr-gcc参数?

作为参考,下面是完整的输出:

代码语言:javascript
复制
Error:The C compiler "C:/WinAVR-20100110/bin/avr-gcc" is not able to compile a simple test program.
It fails with the following output:
 Change Dir: /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp
Run Build Command:/usr/bin/make.exe "cmTryCompileExec420260872/fast"
/usr/bin/make -f CMakeFiles/cmTryCompileExec420260872.dir/build.make CMakeFiles/cmTryCompileExec420260872.dir/build
make[1]: Entering directory '/cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp'
/usr/bin/cmake.exe -E cmake_progress_report /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp/CMakeFiles 1
Building C object CMakeFiles/cmTryCompileExec420260872.dir/testCCompiler.c.obj
C:/WinAVR-20100110/bin/avr-gcc.exe -o CMakeFiles/cmTryCompileExec420260872.dir/testCCompiler.c.obj -c /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp/testCCompiler.c
avr-gcc.exe: /cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp/testCCompiler.c: No such file or directory
avr-gcc.exe: no input files
CMakeFiles/cmTryCompileExec420260872.dir/build.make:60: recipe for target 'CMakeFiles/cmTryCompileExec420260872.dir/testCCompiler.c.obj' failed
make[1]: Leaving directory '/cygdrive/c/Users/Daniel/.clion10/system/cmake/generated/2eb381d5/2eb381d5/__default__/CMakeFiles/CMakeTmp'
make[1]: *** [CMakeFiles/cmTryCompileExec420260872.dir/testCCompiler.c.obj] Error 1
Makefile:117: recipe for target 'cmTryCompileExec420260872/fast' failed
make: *** [cmTryCompileExec420260872/fast] Error 2
CMake will not be able to correctly generate this project.
EN

回答 1

Stack Overflow用户

发布于 2016-12-29 07:21:26

我在windows和linux上使用cmake和avr。语法是相同的。为什么你要在其中使用cygwin?

在任何情况下,您都没有显示工具链文件。当使用cmake进行交叉编译时,您需要提供一个工具链文件,您可以在其中设置与编译器相关的所有配置。您需要这样做,因为当cmake启动时,它会尝试编译一个简单的程序,然后它会尝试运行它。如果你在计算机上使用avr编译器,cmake不能运行可执行文件,所以它失败了。

您需要格外小心,在工具链中包含此命令:

代码语言:javascript
复制
SET(CMAKE_SYSTEM_NAME Generic)

跳过此编译是必需的,因此可以避免失败。

我认为这是一本很好的读物,从哪里开始:

http://playground.arduino.cc/Code/CmakeBuild

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28170625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档