CDT Parse Makefile输出

时间:2014-03-17 15:43:14

标签: c eclipse makefile eclipse-cdt

我使用Eclipse作为IDE来帮助我开发Arduino程序。我使用Arduino Makefile来构建我的项目并让Eclipse使用" external" makefile文件。 makefile非常深入,可以在构建过程中设置构建变量。但是,CDT错误突出显示错误突出显示错误,因为makefile设置了构建变量。有没有办法让Eclipse运行makefile然后解析输出以查看项目中是否有任何错误?

生成文件

BOARD_TAG    = uno
MONITOR_PORT = /dev/ttyACM*

include $(ARDMK_DIR)/Arduino.mk

1 个答案:

答案 0 :(得分:0)

据我所知,不!考虑到CDT托管make构建的递归性质,这将是一项相当重要的任务。您可以在 C / C ++ General-> Preprocessor Include Paths-> Entries-> GNU C-> CDT用户设置条目(视为内置条件)下定义预处理器符号。

提议的解决方案

  • makefile 在使用某种bash脚本编译之前生成带有这些值的头文件

实施例

我现在正在使用的主项目使用Eclipse-CDT-External-Makefile。我们有几个'CONFIG_DO_ABC'类型变量。我们生成一个config.h。这是一个简单的例子。

<强>生成文件

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 vars(例如#ifdef HALT_ON_BUG或其他东西)。

你必须使用比config.awk更复杂的脚本来使用字符串;但希望这足以开始。