考虑以下目录结构:
.
bar/
foo/
test.ext1
_foo/
Run Code Online (Sandbox Code Playgroud)
我用以下规则编写了一个 makefile:
_%.ext2: bar/%.ext1 # % should match foo/test
echo $*
Run Code Online (Sandbox Code Playgroud)
然而运行make _foo/test.ext2给出:
make: *** No rule to make target '_foo/test.ext2'. Stop.
Run Code Online (Sandbox Code Playgroud)
当我查看时make -d _foo/test.ext2,它甚至没有考虑上述规则,即它直接跳到尝试内置规则。我不明白这里发生了什么,有人可以向我解释一下吗?
编辑:我希望能够从 中的任意文件生成bar,例如:
bar/foo/test-2.ext1->_foo/test-2.ext2bar/baz/another.ext1->_baz/another.ext2_foo和的存在_baz是有保证的。
所以我使用 NodeJS 文档中的这个示例代码:
const readline = require('readline');
const rl = readline.createInterface(process.stdin, process.stdout);
console.log("Hello!");
rl.setPrompt('OHAI> ');
rl.prompt();
rl.on('line', (line) => {
switch(line.trim()) {
case 'hello':
console.log('world!');
break;
default:
console.log('Say what? I might have heard `' + line.trim() + '`');
break;
}
rl.prompt();
}).on('close', () => {
console.log('Have a great day!');
process.exit(0);
});
Run Code Online (Sandbox Code Playgroud)
我在 Windows 上,运行 NodeJS 6.0.0。当我运行该文件时,它会写“Hello!”,然后是第一个“OHAI>”。到现在为止还挺好。现在我尝试编写一个任意的“asd”。当我按 Enter 时,会发生以下两种情况之一:
阿斯达
说什么?我可能听说过“asd”
上海>
说什么?我可能听说过“asd”
上海>
这仅发生在第一个输入行上。这似乎是完全随机的,但是,如果在我键入 之后node test.js,我按回车键的速度足够快,有时我会在第一个“OHAI>”之前得到一个换行符,并且它不会打印我的任意输入。
这个例子有什么问题吗?它是 NodeJS 中的错误吗?即使它无法修复,我也很高兴知道是什么原因造成的,因为我已经拉了几个小时的头发了。