$(objs):%.o:%.cpp和$(objs):$(objs:.o = .cpp)之间的差异是什么
What is the diferrence between $(objs): %.o : %.cpp and $(objs): $(objs:.o=.cpp) in Makefile
我在当前目录中有add.c sub.c,并通过makefile进行编译。
我做以下操作:
程序1:
objs = $(patsubst%.cpp,%.o,$(野卡 *.cpp((
$(objs(:%.o:%.cpp
g -o $@ -c $&&<
程序2:
objs = $(patsubst%.cpp,%.o,$(野卡 *.cpp((
$(objs(:$(objs:.o = .cpp(
g -o $@ -c $&&<
程序1成功编译。但是程序2获取以下命令:
g -o sub.o -c sub.cpp
g -o add.o -c sub.cpp
那么这两个程序之间有什么差异?
makefile 1中的规则等于
sub.o: sub.cpp
g++ -o $@ -c $<
add.o: add.cpp
g++ -o $@ -c $<
正常工作。
makefile 2中的规则扩展到
sub.o add.o: sub.cpp add.cpp
g++ -o $@ -c $<
说这两个目标的每个目标都取决于源文件。请注意,自动变量$<
扩展到第一个先决条件,在这种情况下为sub.cpp
。因此,即使尝试构建add.o
。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- Linux的Cpp上的计时器
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 命名空间中具有.h和.cpp文件的类
- 内置函数可查看CPP中的成员变量
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- Cpp-Tuple使用带有变量的get
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何通过cpp程序运行shell脚本
- 使用2个键的cpp-stl::优先级队列排序不正确
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何在cpp文件之间切换窗口?在Qt中
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我需要知道编译器如何在cpp中使用析构函数
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 无法在UE4中包含BP类到CPP类
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- $(objs):%.o:%.cpp和$(objs):$(objs:.o = .cpp)之间的差异是什么