我已在mathobj.cpp
及sum1.cpp
和multiple.cpp
中的g++ -c main.cpp mathobj.cpp -fopenmp sum1.cpp multiple.cpp
g++ -fopenmp main.o mathobj.o sum1.o multiple.o -o Test
及其方法中定义了一个对象。此方法中的代码使用openmp库
以下编译命令的等效makefile是什么:
{{1}}
答案 0 :(得分:2)
您可以参考下面的Makefile:
生成文件:
SRCS = main.cpp \
mathobj.cpp \
sum.cpp \
multiple.cpp
OBJS=$(SRCS:.cpp=.o )
.PHONY: all clean
all: test
test : $(OBJS)
[TAB] g++ -fopenmp $^ -o $@
%.o: %.cpp
[TAB] g++ -fopenmp -c $< -o $@
clean:
[TAB] rm -rf *.o test
答案 1 :(得分:2)
我认为大多数人写的Makefile
太长了。
如果您将main.cpp
重命名为Test.cpp
,您的任务会变得更加轻松。然后,您不必在Makefile中定义任何规则,但可以使用隐式规则。
重命名后,Makefile
变得非常简单:
CXXFLAGS = -fopenmp
Test: mathobj.o sum.o multiple.o
这就是你所需要的一切!
$ make
g++ -fopenmp -c -o mathobj.o mathobj.cpp
g++ -fopenmp -c -o sum.o sum.cpp
g++ -fopenmp -c -o multiple.o multiple.cpp
g++ -fopenmp Test.cpp mathobj.o sum.o multiple.o -o Test
但是,如果你愿意,你也可以跳过中间步骤并一次编译所有内容(同样,你Makefile
中只需要这两行代码):
CXXFLAGS = -fopenmp
Test: mathobj.cpp sum.cpp multiple.cpp
这导致:
$ make
g++ -fopenmp Test.cpp mathobj.cpp sum.cpp multiple.cpp -o Test