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

时间:2014-12-09 09:06:53

标签: c++ makefile g++ openmp

我已在mathobj.cppsum1.cppmultiple.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}}

2 个答案:

答案 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