Code :: Blocks中的前/后构建步骤管道重定向失败

时间:2017-07-28 07:55:56

标签: linux shell build codeblocks

我正在尝试在代码::块16.01(构建:2016年2月2日,03:15:41 - wx2)的构建后步骤(构建选项... /前/后构建步骤)上执行以下操作.8.12(Linux,unicode) - 64位): PYMODULE="`printf ${PROJECT_NAME}.so | sed 's/^lib/_/'`" 但它无法在构建日志中显示: s/^lib/_/'`"': 1: s/^lib/_/'`"': Syntax error: EOF in backquote substitution

然后我试过了 echo libdaoc.so | sed 's/^lib/_/' 它在终端中工作正常,但在Code :: Blocks pre / post构建步骤中,管道操作在 Build log 中显示失败: 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导出,所以我需要使用环境变量而不是硬编码的固定名称。

2 个答案:

答案 0 :(得分:1)

不需要sed,任何 POSIX shell都可以使用参数替换执行相同的工作:

PYMODULE="_${PROJECT_NAME#lib}.so"

以上假定前缀为" lib "存在,(OP似乎意味着它应该)。

答案 1 :(得分:0)

我最终使用Code :: Blocks script expansion作为@agc为Makefile提供的交互式构建和解决方案......基本上,Makefile需要在cb2make生成后进行一些后处理:

  • 使用标准shell命令
  • 替换 Code :: Blocks脚本扩展
  • Code :: Blocks中定义的全局变量的指定(不导出手动指定的变量,PROJECT_NAME等)

我对 cb2make Code :: Blocks 抱有更高的期望。尝试制作跨平台解决方案,即使在单一平台上也无法执行足够的构建。