[英]makefile using g++ -c and g++ -fopenmp
我已经在mathobj.cpp
定义了一个对象,并在sum1.cpp
和multiple.cpp
定义了其方法。 此方法中的代码使用openmp库
以下编译命令的等效makefile是什么:
g++ -c main.cpp mathobj.cpp -fopenmp sum1.cpp multiple.cpp
g++ -fopenmp main.o mathobj.o sum1.o multiple.o -o Test
您可以参考下面的Makefile:
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
我认为大多数人写的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.