我使用 Eclipse 作为 IDE 来帮助我开发 Arduino 程序。我正在使用Arduino Makefile构建我的项目并让 Eclipse 使用“外部”makefile。 makefile 非常深入,它在构建过程中设置构建变量。然而,CDT 错误突出显示器会突出显示错误,因为 makefile 设置了构建变量。有没有办法让 Eclipse 运行 makefile,然后解析输出以查看项目中是否有错误?
Makefile
BOARD_TAG = uno
MONITOR_PORT = /dev/ttyACM*
include $(ARDMK_DIR)/Arduino.mk
最佳答案
据我所知,没有!无论如何,考虑到 CDT 管理的 make 构建的递归性质,这将是一项艰巨的任务。如果您愿意,可以在C/C++ 常规->预处理器包含路径->条目->GNU C->CDT 用户设置条目(视为内置)下定义预处理器符号。
建议的解决方案
- 在使用某种 bash 脚本进行编译之前,让您的 makefile 生成包含这些值的头文件
实现示例
我现在工作的主要项目使用 Eclipse-CDT-External-Makefile。我们有几个“CONFIG_DO_ABC”类型变量。我们生成一个config.h。这是一个简化的示例。
Makefile
include config.mk
all:
./config.awk config.mk > config.h
gcc main.c -o main.o
clean:
rm -r *.o main
config.mk
CONFIG_A := 1
CONFIG_B := 2
CONFIG_C := 3
config.awk
#!/usr/bin/awk -f
BEGIN {
print "/* Generated by config.awk; do not edit */"
print "#ifndef CONFIG_H"
print "#define CONFIG_H"
}
$1 ~ /^CONFIG_/ && $2 ~ /^:?=$/ { print "#define", $1, $3 }
END { print "#endif" }
main.c(说明性示例)
#include "config.h"
int main (void) {
return CONFIG_A;
}
(控制台输出)
make all
./config.awk config.mk > config.h
gcc main.c -o main.o
这对于我的用例非常有效,特别是对于 #ifdef var(例如 #ifdef HALT_ON_BUG 等)。
您将必须使用比此处的 config.awk 更复杂的脚本来使用字符串;但希望这足以开始。
关于CDT 解析 Makefile 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22458785/