首页 > 解决方案 > Eclipse 在预构建中定义构建变量

问题描述

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

#!/bin/sh
echo 'aaaa'

在 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 命令行模式一起使用

我怎样才能做到这一点 ?

标签: linuxshellgccbuildeclipse-cdt

解决方案


显然,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

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


推荐阅读