所以我試圖寫一個Makefile以與QuestaSim和systemverilog文件一起使用。如果你不知道那是什麼(而大多數人不會),那麼別擔心,這與我的問題沒有關係。如何編寫一個生成文件,其中編譯後的目標文件位於具有不同名稱的不同目錄中?
我有一個包含項目總監:SRC /工作/ Makefile中
src /目錄中包含幾個目錄,每個包含的源文件。
工作/目錄不存在最初,由生成文件創建。
當我把我的「編譯」這就是所謂的VLOG,在目錄上獲取的工作文件夾具有相同的名稱作爲不帶後綴的.sv文件中創建一個.sv文件。在那個目錄中有三個文件,我將用作我的「對象」文件的文件是_primary.dat。
例如,調用「vlog src/interface/my_interface.sv」創建(如果成功) /my_interface/_primary.dat
我.sv文件還需要按照特定的順序進行編譯,而我只想編譯它們如果源文件或他們的依賴的一個改變。
我可以把使用「$(addsuffix /_primary.dat,$(addprefix $(VLIB_DIR)/,$(basename $(notdir $(SRC)))))將.sv文件的路徑導入到相關_primary.dat文件的路徑中。 「但是相反的情況是不可能的,因爲我們沒有目錄結構。」
所以我想我想要的是某種來自object - > src的映射。因此,在我的$(OBJ)目標中,我可以執行「vlog $(getsrc $ @)」。
之後,我必須處理編譯順序和依賴關係,但我大概可以工作了這一點。
有什麼建議嗎?
1)是否有源名稱衝突的危險?也就是說,如果有'src/interface/foo.sv',那麼是否還會有'src/engine/foo.sv'? 2)'src /'可以超過兩層深嗎?也就是說,有沒有'src/foo/bar/baz.sv'? – Beta
我要求包/接口/模塊具有與文件相同的名稱。所以任何衝突都會導致編譯錯誤。目前這些目錄只有兩層,但我可能會考慮稍後添加更多層。 –
你有沒有看過Questa自帶的'vmake'工具? –