据我所知,没有!无论如何,这将是一项艰巨的任务,因为 CDT 管理的 make 构建具有递归性质。如果您愿意,您可以在 C/C++ General->Preprocessor Include Paths->Entries->GNU C->CDT User Settings Entries(视为内置)下定义预处理器符号。
建议的解决方案
- 在使用某种 bash 脚本进行编译之前,让您的 makefile 生成包含这些值的头文件
实施示例
我现在工作的主要项目使用 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 更复杂的脚本来使用字符串;但希望这足以开始。