gpt4 book ai didi

CDT 解析 Makefile 输出

转载 作者:行者123 更新时间:2023-11-30 17:37:15 24 4
gpt4 key购买 nike

我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com