我在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发布于 2014-12-09 18:40:21
你可以参考下面的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发布于 2014-12-09 21:54:06
我认为大多数人写的Makefiles都太长了。
如果您将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 Testhttps://stackoverflow.com/questions/27375004
复制相似问题