我正在看一個Makefile來找出我的問題。我的問題是編譯中包含兩個目錄,它們的Fortran源文件名稱完全相同,編譯本身如何決定使用哪個源文件。至於我的情況,這兩個目錄是/ dir1 /和/ dir2 /。兩者都有一個名爲test.F90文件的Fortran文件,並且這兩個目錄都包含在包含目錄中。那麼爲什麼編譯/dir1/test.F90而不是/dir2/test.F90。 Makefile的代碼片段是真正的編譯編譯過程如何選擇正確的源文件?
SOURCES := $(shell cat Srcfiles)
OBJS := $(addsuffix .o, $(basename $(SOURCES)))
.F90.o:
$(FC) -c $(INCLDIR) $(INCS) $(FFLAGS) $(FREEFLAGS) $<
部分看起來像:
mpif90 -c -I/dir1/ -I/dir2 ... /dir1/test.F90
在Srcfiles
,還有所有Fortran文件的列表作爲
test.F90
test1.F90
...
還有一個名爲Filepath的文件,它列出文件目錄爲
/dir1/
/dir2/
/dir3/
我提供儘可能多的,我認爲與我的問題有關,你能指出方向如何解決我的問題?
'INCLDIR'是如何形成的?另外,目前還不清楚構建目標的規則是什麼,即需要哪些目標文件。那只是'OBJS'? (我懷疑這一點。) – Inspired
*「我提供的數據與我的問題相關的數量一樣多......」*顯然你沒有提供足夠的數據。請發佈整個makefile。你想知道Make如何選擇'dir1/test.F90',或者如何讓Make使用'dir2/test.F90'? – Beta