2012-03-05 70 views
2

我正在研究一個涉及本機代碼的android項目,我試圖使用Kiss的FFT庫與NDK。但是,我很難理解Kiss FFT使用的makefile的下面部分。誰可以給我解釋一下這個?瞭解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 

任何幫助將不勝感激!

+0

括號代表測試; '人測試'是瞭解'測試'命令的地方。 &&和||是'和'和'或'運營商;使用它們來執行一條命令,然後有條件地執行另一條命令是一種常見的腳本慣用語。第2行似乎是'測試.s文件是否存在,如果將其移至備份.s〜else continue('true')。第5行是如果bkup .s〜存在,則在它與當前.s之間顯示diff,否則繼續。 &&做'如果那麼'和||是別的。 – 2012-03-05 16:20:58

回答

3

2.將彙編代碼(kiss_fft.s)移動到備份文件(如果存在),否則返回真實狀態,以便執行下一行。

5.5.向您展示gcc之前的彙編程序輸出與當前輸出之間的差異,如果之前有輸出(通過步驟2.移入kiss_fft.s〜)。

+1

+1:和'|| true「部分確保總體命令成功,因此,如果執行第2行時沒有文件'kiss_fft.s','make'不會停止處理。 – 2012-03-05 16:41:25