- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我的 makefile 中有这样的内容:
all:
cd some_directory
但是当我输入 make
时,我只看到“cd some_directory”,就像在 echo
命令中一样。
最佳答案
它实际上是在执行命令,将目录更改为 some_directory
,但是,这是在子进程 shell 中执行的,不会影响 make 或您正在使用的 shell。
如果您希望在 some_directory
中执行更多任务,您需要添加分号并附加其他命令。请注意,您不能使用新行,因为 make 将它们解释为规则的结尾,因此为了清楚起见,您使用的任何新行都需要用反斜杠转义。
例如:
all:
cd some_dir; echo "I'm in some_dir"; \
gcc -Wall -o myTest myTest.c
另请注意,即使您添加反斜杠和换行符,每个命令之间也必须使用分号。这是因为整个字符串被 shell 解析为一行。正如注释中所指出的,您应该使用“&&”来连接命令,这意味着只有前面的命令成功时才会执行它们。
all:
cd some_dir && echo "I'm in some_dir" && \
gcc -Wall -o myTest myTest.c
这在进行破坏性工作(例如清理)时尤其重要,因为如果 cd
由于某种原因失败,您就会破坏错误的东西。
不过,常见的用法是在您可能想要查看的子目录中调用 make。为此有一个命令行选项,因此您不必自己调用 cd
,因此您的规则将如下所示
all:
$(MAKE) -C some_dir all
它将更改为some_dir
并执行该目录中的Makefile
,目标为“all”。最佳实践是使用 $(MAKE)
而不是直接调用 make
,因为它会小心地调用正确的 make 实例(例如,如果您使用适合您的构建环境的特殊 make 版本),并在使用某些开关(例如 -t
)运行时提供略有不同的行为。
郑重声明,make总是回显它执行的命令(除非明确禁止),即使它没有输出,这就是您所看到的。
关于makefile - 如何在 makefile 中写入 'cd' 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1789594/
我是一名优秀的程序员,十分优秀!