我使用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++ General-> preprocessor Include Paths->Entries->GNU C->CDT User Settings Entries下定义预处理器符号。
建议方案
- 让你的makefile在编译前使用bash脚本生成一个带有这些值的头文件
实现示例
我现在工作的主要项目使用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变量(例如#ifdef HALT_ON_BUG,或其他东西)。
您将不得不使用比配置更复杂的脚本。Awk在这里为您的字符串使用;但希望这足以让你开始。