理解makefile配方

理解makefile配方,makefile,kissfft,Makefile,Kissfft,我正在从事一个涉及本机代码的android项目,我正在尝试将Kiss FFT库与NDK一起使用。但是,我很难理解Kiss FFT使用的makefile下面列出的部分。有人能给我解释一下吗 我知道第一行定义了目标kiss\u fft.s及其先决条件,接下来的四行是配方,其中3.和4.是编译器命令。但是我不懂第二行和第五行 1. kiss_fft.s: kiss_fft.c kiss_fft.h _kiss_fft_guts.h 2. [ -e kiss_fft.s ] && m

我正在从事一个涉及本机代码的android项目,我正在尝试将Kiss FFT库与NDK一起使用。但是,我很难理解Kiss FFT使用的makefile下面列出的部分。有人能给我解释一下吗

我知道第一行定义了目标
kiss\u fft.s
及其先决条件,接下来的四行是配方,其中
3.
4.
是编译器命令。但是我不懂第二行和第五行

1. kiss_fft.s: kiss_fft.c kiss_fft.h _kiss_fft_guts.h
2.   [ -e kiss_fft.s ] && mv kiss_fft.s kiss_fft.s~ || true
3.   gcc -S kiss_fft.c -O3 -mtune=native -ffast-math -fomit-frame-pointer -unroll-loops -dA -fverbose-asm 
4.   gcc -o kiss_fft_short.s -S kiss_fft.c -O3 -mtune=native -ffast-math -fomit-frame-pointer -dA -fverbose-asm -DFIXED_POINT
5.   [ -e kiss_fft.s~ ] && diff kiss_fft.s~ kiss_fft.s || true

任何帮助都将不胜感激

Line
2.
将程序集代码(kiss_fft.s)移动到备份文件(如果存在),否则返回真实状态,因此将执行下一行


5行。
显示了gcc先前汇编程序输出与当前输出之间的差异,前提是之前有输出(通过步骤
2.
移动到kiss_fft.s~)。

括号表示测试<代码>人工测试是学习“测试”命令的地方。&&和| |是“和”和“或”运算符;使用它们有条件地执行一个命令,然后执行另一个命令,这是一种常见的脚本习惯用法。第2行似乎是“测试.s文件是否存在,如果存在,将其移动到备份中。否则继续('true')。第5行是如果bkup.s~存在,则显示它与当前的.s~之间的差异,否则继续。&&do'if then'和| |是else。+1:和
| | true
部分确保整个命令成功,以便
make
不会在执行第2行时停止处理,例如,如果没有文件
kiss_fft.s