我在Android.mk中使用了一些shell命令,比如
$(shell rm -rfv $(TARGET_OUT)/xxx)
我希望看到在建设过程中输出的命令。但是,当我使用
时,输出总是单行$(info $(shell rm -frv $(TARGET_OUT)/www))
或
$(info "$(shell rm -frv $(TARGET_OUT)/www)")
结果就像
removed `out/target/product/xxx/system/xxx/xxx.xxx' removed directory: `out/target/product/xxx/system/xxx/xxx'
而不是
removed `out/target/product/xxx/system/xxx/xxx.xxx'
removed directory: `out/target/product/xxx/system/xxx/xxx'
有谁知道如何解决这个问题?
答案 0 :(得分:2)
对于GNU Make来说,这根本不可能,因为$(shell)的输出总是以用空格替换换行符的方式扩展。顺便说一句,这是故意的。
一般来说,使用$(shell ...)命令对文件系统进行任何类型的更改都是一个坏主意,因为当GNU Make稍后尝试计算依赖关系/哪些操作时,其中一些更改将不可见跑步。在某些情况下,这可能导致不可预测的行为。