繁体   English   中英

使用g ++ -c和g ++ -fopenmp的makefile

[英]makefile using g++ -c and g++ -fopenmp

我已经在mathobj.cpp定义了一个对象,并在sum1.cppmultiple.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM