gpt4 book ai didi

makefile - 为什么执行过程中会出现脚本和注释?

转载 作者:行者123 更新时间:2023-12-02 19:36:33 24 4
gpt4 key购买 nike

在我的 makefile 中,我有一个名为 indent-fast 的目标 --

indent-fast:
# astyle --style=allman --indent=tab `find . -name "*.java"`
files=`find . -name "*.java"` ; \
for file in $$files ; do \
echo formatting $$file ; \
done ;\
# to do a whitesmith at 4 spaces, uncomment this line --
# astyle --style=whitesmith --indent=spaces=4 `find . -name "*.java"`

但是当我执行它时,我得到这个输出--

ramgorur@ramgorur-pc:~$ make indent-fast

# astyle --style=allman --indent=tab `find . -name "*.java"`
files=`find . -name "*.java"` ; \
for file in $files ; do \
echo formatting $file ; \
done ;\
formatting ./File1.java
formatting ./File2.java
formatting ./File3.java
.
.
.
formatting ./FileN.java
# to do a whitesmith at 4 spaces, uncomment this line --
# astyle --style=whitesmith --indent=spaces=4 `find . -name "*.java"`

为什么它显示脚本以及 std 输出上的注释?另请注意,indent-fast 是文件中的最后一个目标。

最佳答案

因为您的注释在配方中缩进,所以它们不是 make 注释,而是作为配方的一部分执行。在这种情况下,它们是空壳评论。如果您的目标是,您可以添加 @ 以防止它们被输出。

来自GNU make manual :

Comments within a recipe are passed to the shell, just as with any other recipe text. The shell decides how to interpret it: whether or not this is a comment is up to the shell.

简单的 makefile 示例:

# make comment
target:
# shell comment
:
@# output-suppressed shell comment
@:

执行:

$ make
# shell comment
:

编辑:由于示例不够好,这里是您具体问题的解决方案:

indent-fast:
@# astyle --style=allman --indent=tab `find . -name "*.java"`
@files=`find . -name "*.java"` ; \
for file in $$files ; do \
echo formatting $$file ; \
done
@# to do a whitesmith at 4 spaces, uncomment this line --
@# astyle --style=whitesmith --indent=spaces=4 `find . -name "*.java"`

关于makefile - 为什么执行过程中会出现脚本和注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23122439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com