1
vitodongdong 2019-08-26 16:23:39 +08:00
如果 make 耗时差别不大的话,我觉得没必要根据你说的 target 来 clean
|
2
momocraft 2019-08-26 16:30:38 +08:00
正确使用时 make target 应该不会重新生成不需要的中间文件
如果不正确则 make 也无从知道 clean target 要做的事的下限(显然删掉所有中间文件是上限) |
3
forcecharlie 2019-08-26 16:39:37 +08:00
添加
```makefile targetclean: -rm some/target/file ``` ``` make targetclean make ``` 实际上如果处理好 makefile target 的依赖,是不需要 make clean 再构建的。 |
4
amiwrong123 OP @vitodongdong
我这很慢啊,全编得要一晚上== |
5
amiwrong123 OP @momocraft
主要吧,make target 不会把上一次生成的文件做什么处理,但这个可能会造成一些问题(比如链接到某个不应该存在的文件,本来本地编译应该出错的,但却因为这个不应该存在的文件而通过了编译)。 最笨的就是,去手动删除这个 target 生成的文件。 |
6
amiwrong123 OP @forcecharlie
就是相当于 mk 里,执行了 rm 呗。 刚才试了命令 make clean-targetname,发现好使,可以把 out/target/common 和 out/target/product 里的对应文件夹删除掉 |
7
koebehshian 2019-08-26 19:56:33 +08:00
@amiwrong123 "make target 不会把上一次生成的文件做什么处理,但这个可能会造成一些问题",
那说明 Makefile 写得有问题,那只能自己去改 Makefile 文件了 |
8
hardwork 2019-08-26 20:22:15 +08:00 via Android
修改了你直接 make 就可以了,干嘛要先 makeclean?
想要 make clean target 你自己在 make file 里加规则 |
9
amiwrong123 OP @koebehshian
这个有问题指的是,路径有变动。 比如,原来源文件路径下有 A,B,C 三个文件,对应 out 的某个文件夹下有 A,B,C 三个生成文件。 现在源文件路径变为了 dict/A,B,C ( dict 文件夹下有三个文件),但对应的 out 的某个文件夹下有 A,B,C,dict/A,B,C.。即没有把上一次生成的在外面的 A,B,C 删除掉,但它们不应该存在。 这种是 Makefile 写得有问题吗 |
10
zhangfei 2019-08-26 20:31:26 +08:00 via Android
编译的 ROM 吗?
|
11
Android2MCU 2019-08-26 21:33:33 +08:00 via iPhone
mmm module -B 怎么样?
|
12
koebehshian 2019-08-26 22:14:47 +08:00
@amiwrong123 makefile 的本质是编译脚本,只不过通过比较修改时间,决定需不需要重新编译. makefile 太灵活了, 所以具体用法只有看过 makefile 才明白
|
13
no1xsyzy 2019-08-27 09:43:11 +08:00
@amiwrong123 文件结构都变了就不要指望 make 解决了吧……
而且你大概是 rm -rf out ?本来这就是偷懒用法,正经办法是 rm out/A rm out/B rm out/C rm -f out 因为你不知道除了 ABC 以外是否有一些用户文件在里面 |
14
julyclyde 2019-08-27 12:27:13 +08:00
clean 就是一个 target
make clean 并不是一个“神奇的”动作 |
15
SuiXing 2019-08-27 12:46:17 +08:00
话说 刚开始玩 都不知道怎么圈人啊
mmm module -B 现在不能用咯 可以换成 mmma module 其实签名很多大大都说了 找到对应的额中间文件 rm 了就完事了 |