CDT 解析 Makefile 输出

标签 c eclipse makefile eclipse-cdt

我使用 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 脚本进行编译之前,让您的 ma​​kefile 生成包含这些值的头文件

实现示例

我现在工作的主要项目使用 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" }

ma​​in.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/

相关文章:

c - 我需要对此函数进行哪些更改来优化执行时间?

c - C (Unix) 中基于文件的配置处理

java - 在 Eclipse 中自动生成 Javadoc 注释?

java - 在 Eclipse 中正确创建和构建包

c - 当我尝试在 c 中结束事件控制循环时需要两个输入?

c++ - 当内部指针偏移量已知时,抑制 valgrind 中的 "possibly lost"错误

c++ - 重载运算符 + c++ eclipse

c - 生成文件错误 *** 没有规则可生成 `3' 所需的目标 `run'。停止

makefile - 在 Makefile 中首次使用时分配一次变量

c - makefile(链接2个源文件,非主文件)