2

我在开放的 sun-grid 引擎 (gridengine-GE2011.11) 上使用 qmake (v3.82) 时遇到问题,我使用以下 makefile 代码缩小了问题范围:

export FOO = $(shell echo bar | sed 's/bar/foobar/g')

all: echo1 echo2

echo1:
    echo $(FOO)
echo2:
    echo $(FOO)

使用以下命令:

qmake -l arch=linux-x64 -inherit -- -j 2 -f export.mk

我得到这个输出:

echo foobar
dynamic mode
foobar
qmake: *** remote_status: No child processes.  Stop.
qmake: *** Waiting for unfinished jobs....
qmake: *** remote_status: No child processes.  Stop.

它不使用 export
工作 它不使用 $(shell) 命令中的管道
它工作 它使用 FOO:=$(shell) 工作(带有一个 ':')
它工作在 qmake 命令中使用 -j 1 (或不并行化)
它使用常规制作

正是这些因素一起搞砸了一些事情,而这恰好是我的 makefile 中罕见的情况。

有谁知道是什么原因导致这个或知道修复?

4

1 回答 1

0

这似乎是在这种罕见情况下发生的错误。最好的建议是避免使用 ':=' 而不是 '=',不要使用管道传递 shell 表达式,不要使用 $(shell),不要使用 export 或没有 -j 标志。这些中的每一个都可以防止这个问题。

于 2013-06-26T13:43:30.323 回答