小编Ste*_*ate的帖子

Makefile 忽略模式中子目录的模式规则

考虑以下目录结构:

.
  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.ext2
  • bar/baz/another.ext1->_baz/another.ext2
  • ETC。

_foo和的存在_baz是有保证的。

makefile gnu-make

5
推荐指数
1
解决办法
1392
查看次数

NodeJS readline 有时会打印回第一个输入行(但并非总是如此,似乎是随机的)

所以我使用 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 时,会发生以下两种情况之一:

  1. 它打印:

阿斯达

说什么?我可能听说过“asd”

上海>

  1. 它打印

说什么?我可能听说过“asd”

上海>

这仅发生在第一个输入行上。这似乎是完全随机的,但是,如果在我键入 之后node test.js,我按回车键的速度足够快,有时我会在第一个“OHAI>”之前得到一个换行符,并且它不会打印我的任意输入。

这个例子有什么问题吗?它是 NodeJS 中的错误吗?即使它无法修复,我也很高兴知道是什么原因造成的,因为我已经拉了几个小时的头发了。

javascript user-input readline node.js

2
推荐指数
1
解决办法
1206
查看次数

标签 统计

gnu-make ×1

javascript ×1

makefile ×1

node.js ×1

readline ×1

user-input ×1