【问题标题】:How to include directories when building Arduino software构建 Arduino 软件时如何包含目录
【发布时间】:2016-07-16 14:31:56
【问题描述】:

我正在制作一个小型 Arduino 项目。官方的 Arduino IDE 实在是太烂了,所以我改用 Netbeans 来开发。这是我的makefile:

OBJDIR          = ../build

ARDUINO_DIR = /usr/share/arduino

TARGET      = main

MCU     = atmega328p

F_CPU       = 16000000

ARDUINO_PORT    = /dev/ttyACM0
AVRDUDE_ARD_PROGRAMMER  = arduino
AVRDUDE_ARD_BAUDRATE    = 115200

include /usr/share/arduino/Arduino.mk

我想使用一些位于/usr/local/include/myproject 的标头,所以在源代码中添加:

#include "myproject/someheader.h"

现在,当我尝试编译项目时,我收到一条错误消息

fatal error: myproject/someheader.h: No such file or directory

如何在构建项目时包含 /usr/local/include 目录?通常,我会添加

INC=-I/usr/local/include

但这不起作用,我想我需要以其他方式添加头文件?

【问题讨论】:

  • INC 在您发布的生成文件中未提及。也许它在您尚未发布的/usr/share/arduino/Arduino.mk 中提到?创建符号链接来告诉编译器它应该在哪里查找头文件当然是不必要的,但是您需要将生成文件发布到实际设置编译器标志并用于获得非猜测答案的位置。
  • 这是 Makefile:github.com/sudar/Arduino-Makefile/blob/master/Arduino.mk。我完全同意这是必要的。但似乎 Arduino makefile 并不关心常规的包含目录。
  • 这里是 Arduino-Makefile 的the README file。在那里阅读包括库ARDUINO_SKETCHBOOK

标签: makefile arduino include


【解决方案1】:

最后添加了一个从 arduino 目录到我的库位置的符号链接:

ln -s /usr/local/include /usr/share/arduino/libraries/Custom

然后,我将“自定义”“库”添加到 arduino makefile,我的 makefile 现在是:

OBJDIR          = ../build

ARDUINO_DIR = /usr/share/arduino

TARGET      = main

MCU     = atmega328p

F_CPU       = 16000000

ARDUINO_PORT    = /dev/ttyACM0
AVRDUDE_ARD_PROGRAMMER  = arduino
AVRDUDE_ARD_BAUDRATE    = 115200
ARDUINO_LIBS    = Custom # <---- !

include /usr/share/arduino/Arduino.mk

构建过程现在好像获取到了我的头文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-13
    • 2016-03-02
    • 2012-12-16
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2017-01-06
    相关资源
    最近更新 更多