在閱讀scons的手冊頁時,我的理解是,scons並不總是在頭文件發生變化時才意識到,cpp源文件也應該改變。我做了一個實驗,但只是爲了找到,無論我們是否指定了CPPPATH,似乎scons總是會檢測到頭文件更改並應用重建相應的源文件。CPPPATH似乎不適用於scons?
舉例來說,我已經有了OC文件和頭文件/目錄包含NH文件:
#include"headers/n.h"
#include<stdio.h>
int main(){
printf("hello\n");
return 2;
}
而且我scons的SConstruct是這樣的:
Program('o.c')
當我改變NH內容,scons將重建oc文件。這對我來說很令人驚訝。我試圖改變SConscript這樣的:
Program('o.c',CPPPATH='.')
這一次,我希望scons的將只檢查在頭文件,而不是下./headers「」。不過,scons會重建o.c
我將標題/移動到「。」上方的另一個地方。目錄,並將o.c更改爲包含絕對路徑。當我改變NH,仍然使用SCons將重建OC
我的問題:
(1)如何scons的掃描,並確定頭文件發生了變化,它調用gcc的前端或預處理器要做到這一點?如果是這樣,它似乎與編譯重複,對吧?
(2)我沒有發現指定CPPPATH有用:是否指定,scons將掃描。即使當我說CPPPATH =「。」,scons似乎掃描其他目錄。
爲什麼?這是設計嗎?如果是,那麼CPPPATH的用法是什麼?
請每個問題提出一個問題。 –
+1「僅限一個問題」...並且請停止聲明「SCons似乎不工作」。你可以這麼說:「SCons不像預期的那樣行事。」但是這應該包括對文檔的參考,並且最好是一個「最小工作示例」,以清楚地表明偏差。簡單地說,SCons的行爲與你期望的不同,然後問「爲什麼」這個問題,對其他用戶可能不是很有幫助。 – dirkbaechle