linux - 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 命令行模式一起使用
我怎样才能做到这一点 ?
解决方案
显然,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
推荐阅读
- json - 解析 JSON 文件而无需将其保存在文件中
- python - 使用 GPIO.RaspberryPi3 上的触发器发送电子邮件
- django - django allauth 设置 EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL 不起作用
- asp.net - 使用 Ninject 进行 Asp.Net Webforms 构造函数注入
- javascript - 如何使用 Javascript 访问带有 innerHTML 的 twig 变量?
- javascript - 焦点选择的 vue.js 元素不是反应式的
- excel - 如何使用每个循环将信息传输到另一个工作表
- html - amp-html:在 amp-list src 中使用查询参数
- angular - 如何在角度 6 中同一组件的多个实例中进行路由
- r - RSelenium - 如何通过单击下一步按钮转到下一页?