linux进程内cd,linux – 如何在makefile中写’cd’命令?

博客讨论了如何在makefile中执行命令,特别是涉及目录切换、命令链接以及在子进程中执行操作。提到了使用`&&`连接命令以确保前一个命令成功后才执行下一个,并强调了在子目录中调用`make`的正确方法。还推荐使用$(MAKE)代替`make`以确保使用正确的make实例,并提醒注意命令的书写格式,如避免换行和使用反斜杠转义。
摘要由CSDN通过智能技术生成

它实际上是执行命令,将目录更改为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

这在进行破坏性工作(例如清理)时尤为重要,因为如果光盘因任何原因失败,您将会毁坏错误的东西。

一个常见的用法是在子目录中调用make,您可能想要查看。有一个命令行选项,所以你不必自己调用cd,所以你的规则会是这样的

all:

$(MAKE) -C some_dir all

它将变成some_dir并在那里执行Makefile,目标为“all”。作为一个最佳实践,使用$(MAKE)而不是直接调用make,因为它会注意调用正确的make实例(例如,如果您为构建环境使用特殊make版本),以及提供当使用某些开关(例如-t)运行时,行为略有不同。

对于记录,总是回显它执行的命令(除非明确抑制),即使它没有输出,这是你看到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值