【发布时间】:2018-01-04 04:40:15
【问题描述】:
我正在尝试在 Code::Blocks 16.01 (Build: Feb2 2016, 03:15:41 - wx2) 中的构建后步骤(构建选项.../构建前/构建后步骤)执行以下操作.8.12 (Linux,unicode) - 64 位):
PYMODULE="`printf ${PROJECT_NAME}.so | sed 's/^lib/_/'`"
但它未能在 Build log 中显示:
s/^lib/_/'`"': 1: s/^lib/_/'`"': Syntax error: EOF in backquote substitution
然后我尝试了
echo libdaoc.so | sed 's/^lib/_/'
这在终端中运行良好,但在 Code::Blocks 构建前/后步骤中,管道操作失败显示在 构建日志 中:
echo libdaoc.so | sed 's/^lib/_/'
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
...
如何让它发挥作用?
本质上,我正在尝试从 Code::Blocks 环境构建,然后通过 cbp2make 导出,因此我需要使用环境变量而不是硬编码的固定名称。
【问题讨论】:
-
请澄清字符串“lib”是否已知始终是
${PROJECT_NAME}中任何内容的前缀。 -
是的,“lib”是一个预定义的字符串。非常感谢,agc,您的解决方案解决了这个问题!我不知道这种参数扩展!
-
该解决方案适用于外壳。但是当它发现 Code::Blocks pre/post build 面板不支持大多数 shell 命令并产生“_libdaoc#lib}”......这对 Code::Blocks 来说是一种耻辱......
标签: linux shell build codeblocks