Я работаю над проектом Android, который включает в себя собственный код, и я пытаюсь использовать библиотеку Kiss FFT с NDK. Тем не менее, мне трудно понять часть, указанную ниже, в файле makefile, используемом Kiss FFT. Может кто-то объяснить это мне?Понимание рецепта makefile
Я знаю, что первая строка определяет цель kiss_fft.s
и его предпосылки и что следующие четыре строки рецепт, из которых линии 3.
и 4.
являются командами компилятор. Но я не понимаю, линии 2.
и 5.
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
Любая помощь будет принята с благодарностью!
Кронштейны представляют собой тест; 'man test' - это место, где можно узнать о команде« тест ». && и || являются операторами «и» и «или»; это обычная идиома скрипта, чтобы использовать их для выполнения одной команды, за которой следуют условно другое. Строка 2, по-видимому, является «проверкой, если файл .s существует, если переместить его в резервную копию .s ~ else continue (« true »). Строка 5, если существует bkup .s ~, показывает разницу между ней и текущим .s else continue. && делают «if then» и || это другое. –