gpt4 book ai didi

c++ - Makefile 目标 : Difference between %. o 和 $(OBJ)

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:43 24 4
gpt4 key购买 nike

这两个目标有什么区别:

%.o : %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@

$(OBJ) : $(SRC)
$(CXX) -c $(CXXFLAGS) $< -o $@

如果我们假设 SRC包含目录中存在的所有 .cpp 文件和 OBJ = $(SRC:.cpp=.o)

最佳答案

第一个指定每个目标文件都依赖于其对应的源文件,并定义了一个合理合理的规则来从源文件($@,所有依赖项)生成目标文件($^,第一个目标) .它应该使用 $< ,只是第一个依赖项,因为通常会有其他依赖项 - 源文件包含的 header 。您通常可以完全忽略此规则;有一个implicit rule用于编译单个 C++ 文件。

第二个指定所有目标文件都依赖于所有源文件,并定义了一个功能失调的规则,它将无法编译任何东西。例如,定义 SRC = a.cpp b.cpp , 这扩展到

g++ -c  a.cpp b.cpp -o a.o

-c 以来失败只编译一个源文件:

g++: fatal error: cannot specify -o with -c, -S or -E with multiple files

关于c++ - Makefile 目标 : Difference between %. o 和 $(OBJ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com