2017-03-29 36 views
2

比方说,我有两个C++主文件,project.cppprojectgraph.cpp。 它们都使用相同的头文件functions.h以及文件functions.cpp具有两个C++文件的Makefile:如何选择要编译的文件?

要编译project.cpp,我使用下面的Makefile:

CXX = g++ 
CXXFLAGS= -std=c++11 -w -Wall -g 

project: project.o functions.o 
    $(CXX) $(CXXFLAGS) -o project projet.o functions.o 

functions.o: functions.h 

clean: 
    rm -rf *.o 

我希望能够project.cppprojectgraph.cpp之间进行选择,以在终端使用make命令进行编译。例如:

  • 如果我在终端输入make:将编译project.cpp
  • 如果我在终端输入make graphprojectgraph.cpp会被编译。

如何更改makefile以获得此结果?

谢谢!

+0

只需添加一行:'graph:projectgraph.o functions.o'让隐式规则为您工作。在你的'project'规则之后添加行。 –

回答

3

只需添加额外程序的目标。此外,functions.cpp需要位于functions.o的依赖项列表中,并且functions.h应位于projectprojectgraph的依赖项列表中。

CXX = g++ 
CXXFLAGS= -std=c++11 -w -Wall -g 

project: project.o functions.o functions.h 
    $(CXX) $(CXXFLAGS) -o project projet.o functions.o 

functions.o: functions.cpp functions.h 

projectgraph: projectgraph.o functions.o functions.h 
    $(CXX) $(CXXFLAGS) -o project projet.o functions.o 

clean: 
    rm -rf *.o 

然后你可以使用

make projectgraph 
+0

它完美的作品,谢谢! –

0

我相信所有你需要做的是:

graph : project.o functions.o 
    $(CXX) $(CXXFLAGS) -o projectgraph projectgraph.o functions.o 

至少,这是我诠释他过去所做的。你可以做更多的事情来使项目成为默认等,但上面的内容应该是你要求的。

相关问题