Eclipse 在预构建中定义构建变量

Mic*_*rog 5 linux shell gcc build eclipse-cdt

我在 /tmp/test.sh 中创建了简单的 shell 脚本文件

#!/bin/sh
echo 'aaaa'
Run Code Online (Sandbox Code Playgroud)

在 Eclipse->C/C++ Build->Setting->Build Step -> Pre-build steps->Command 中,我添加了 TEST =/tmp/test.sh

比在 C/C++ Build->Setting->Tool Settings->Cross GCC Compiler ->Command line pattern 中,我尝试像-D ${TEST}这样使用这个变量-D aaaa(shell 脚本的输出)

但在构建控制台我没有看到,-D aaaa已通过了GCC,其实我没有看到-D在所有

这是为什么?我想在预构建中设置变量,这将是 shell 脚本的输出,并与 gcc 命令行模式一起使用

我怎样才能做到这一点 ?

jf_*_*jf_ 0

显然,CDT 管理的构建不允许运行外部命令来分配环境变量、构建变量或命令行标志,因此在该阶段执行脚本不起作用。

不是关于如何使用 gcc 命令行模式执行此操作的问题的直接答案,但如果您确实只想将定义以及从脚本获得的结果传递给预处理器,则可以使用脚本来更新或创建包含在某处的头文件,例如:

#!/bin/sh
echo "#ifndef __MYVARHEADER__" > ../include/myvarheader.h
echo "#define __MYVARHEADER__" >> ../include/myvarheader.h
echo "#define aaaa" >> ../include/myvarheader.h
echo "#endif" >> ../include/myvarheader.h
Run Code Online (Sandbox Code Playgroud)

在 Eclipse->C/C++ Build->Setting->Build Step -> Pre-build Steps->Command 中,执行即可/tmp/test.sh