我正在尝试创建一个makefile,它将按特定顺序编译源文件。我在.txt文件中订购了源文件名。
1 # compiler
2 FC = gfortran
3 # compile flags
4 FCFLAGS = -g -fbounds-check
5 FCFLAGS = -O2
6 # required for gfortran
7 FCFLAGS += -I/usr/include
8 # source files and objects
9 #SRCS = $(patsubst %.mod, %.o)
10
11 # program name
12 PROGRAM = madeIt
13
14 all: $(PROGRAM)
15
16 $(PROGRAM): $(SRCS)
17 $(FC) $(FCFLAGS) -o $@ $^
18
19
20 clean:
21 rm *.o *.mod
我创建了一个shell脚本来按顺序编译它们,然后尝试通过makefile链接它们,但我不确定这是最好的方法。
1 #usr/bin/sh
2
3 # initial cleanup
4 rm *.o *.mod
5 rm oCommand.txt
6 rm oFiles.txt
7
8 for line in $(cat order.txt); do gfortran -c "$line"; done
9
10 ls *.o > oFiles.txt
11
12 for line in $(cat oFiles.txt); do echo -n "$line" >> oCommand.txt; echo -n "
13
14 cat oFiles.txt | wc -l
15
16 for i in $(cat oCommand.txt); do gfortran -o madeIt "$i"; done
有什么想法? 我很失落,所以任何帮助都会很棒。
答案 0 :(得分:4)
忘记shell脚本,并使用makedepf90之类的工具生成一个指定依赖项的makefile片段,以便make知道必须编译哪些文件。
如果您使用GNU make,则可以将该片段包含在主makefile中,否则复制粘贴或类似内容。