C++ 如何在Makefile中重用目标?
基本上,我想让这段代码在fileMakefile中可执行:C++ 如何在Makefile中重用目标?,c++,linux,makefile,C++,Linux,Makefile,基本上,我想让这段代码在fileMakefile中可执行: targ: file1.cpp g++ file1.cpp -o file1 targ: file2.cpp g++ file2.cpp -o file2 targ: file3.cpp g++ file3.cpp -o file3 我知道我可以把它组合成这样的东西: targ: file1.cpp file2.cpp file3.cpp g++ file1.cpp -o file1 g++
targ: file1.cpp
g++ file1.cpp -o file1
targ: file2.cpp
g++ file2.cpp -o file2
targ: file3.cpp
g++ file3.cpp -o file3
我知道我可以把它组合成这样的东西:
targ: file1.cpp file2.cpp file3.cpp
g++ file1.cpp -o file1
g++ file2.cpp -o file2
g++ file3.cpp -o file3
但是我希望它只在更新相应的文件时运行相应的行。我该怎么做?提前谢谢。您必须正确建立关系 例如:
targ: file1 file2 file3
file1: file1.cpp
g++ file1.cpp -o file1
file2: file2.cpp
g++ file2.cpp -o file2
file3: file3.cpp
g++ file3.cpp -o file3
也就是说:
如果您想构建
target
(您也应该将其设置为假的),请确保您将构建file1
file2
和file3
。对于这一点,你有明确的规则。就这样 在makefile规则中,您在:
左侧放置的任何内容都是运行以下命令的结果。在您的示例中,您说,targ
产品是以三种不同的方式制造的,这令人困惑,因为创建targ
的方式不明确。您可能想说的是,为了成功构建targ
,您需要创建三个可执行文件file1
file2
和file3
,每个文件都是使用相应的.cpp
文件构建的
为此,你可以依赖于。对于C++可执行文件,隐式配方将查找具有相同名称的<代码> .O/COD>文件,对于该代码> O./C>文件,它将查找包括“代码> > CPP < /代码> .<
所以基本上像这样的东西就足够了:
CXX=g++
targ: file1 file2 file3
隐式配方使用<代码> CXX/CODE >定义C++编译器,<代码> CPPPFLAGs/COD>定义预处理器标志(<代码> -I/COD>,<代码> -D/COM>等)编译器和链接标志>代码> CXXFLACK< <代码> LDFLAGs<代码>,以及链接到什么代码库>代码> LDLBS < /P> 如果不想依赖隐式规则,可以创建模式配方并使用:
target: file1 file2 file3
%: %.cpp
g++ $^ -o $@