【问题标题】:Build throws error in CLion using CMake使用 CMake 在 CLion 中构建引发错误
【发布时间】:2015-12-01 12:59:53
【问题描述】:

使用以下 CMake 配置在 CLion 中启动一个新的 C 项目:

cmake_minimum_required(VERSION 3.3)

project(test)

include_directories("/usr/lib/avr/include")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set(SOURCE_FILES main.c)

add_executable(alma ${SOURCE_FILES})

简单的main.c

#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/iom8.h>
#include <util/delay.h>

int main(void)
{
    DDRD |= _BV(PD5)|_BV(PD6);
    PORTD |= _BV(PD6);

    while (1) {
        PORTD ^= _BV(PD5)|_BV(PD6);
        _delay_ms(500);
    }
}

构建时抛出以下警告

警告:#warning“未定义设备类型”

我试过了(浏览了大量的谷歌结果)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmcu=atmega8")

哪个抛出

错误:无法识别的命令行选项“-mmcu=atmega8”

任何帮助都会非常非常感谢,因为我已经搜索了几个小时但没有任何结果......

【问题讨论】:

  • 因此您传递了编译器无法识别的 -mmcu=atmega8 。这与命令行、CMake 和 CLion 无关。请相应地更新您的问题。您应该检查您是否真的使用了您认为正在使用的编译器。显然它不支持你的目标架构。
  • 看起来您正在尝试交叉编译。所以你可能需要像cmake-avr 这样的工具链文件。另请参阅here
  • @Florian 非常感谢,这就是陷阱。有用! :) 真正的帮助总是比廉价的谈话更好(关于之前的评论)。
  • @thEth 很高兴我能帮上忙。这只是我自己使用 CMake 进行交叉编译的一个疯狂猜测,我承认,如果我是第一个对你的问题发表评论的人,我可能还会询问你想要实现的目标。关于你解决问题的方法,你喜欢answer it yourself吗?
  • @Florian 这可能是另一个问题 - 这将是我的 AVR mcu 的程序。一个新问题即将出现 - 如何使 CLion C 的 hex 可执行?尝试使用xxd,但avrdude 对输入感到愤怒(无效输入-1)。

标签: c command-line cmake avr


【解决方案1】:

看起来您正在尝试交叉编译。所以你可能需要像cmake-avr 这样的工具链文件。另见here。 ——弗洛里安

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多