CC:c编译器,默认值为cc,通常情况下,cc是一个指向gcc的链接,负责将c程序编译成汇编程序。 CXX:c++编译器,默认值为g++。 CPP:预处理器,默认值为"$(CC) -E",注意这里的CPP不是C++,而是预处理器。 RM:删除文件,默认值为"rm -f",-f表示强制删除。 (2) 对应程序运行参数的环境变量: ARFLAGS:指定$(AR)...
makefileCXX一般代表C++编译器,$(CXX) 是表示值。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也...
CC: C 编译器的名称,默认值为 cc 。 CXX: C++ 编译器的名称,默认值为 g++ 。 $@: 目标的完整名称。 $<: 第一个依赖文件的名称。 $^: 所有的依赖文件。 app:main.ca.cb.cgcc -c main.c a.c b.c# 下面的表达与上面的表达等价app:main.ca.cb.c$(CC)-c $^ -o$@ 获取变量的值$(变量名)...
通过CFLAGS设置编译器的优化选项或者警告选项。 CXXFLAGS: Extra flags to give to the C++ compiler : 用于指定额外的标志给 C++ 编译器,类似于CFLAGS,但专门用于 C++。 CPPFLAGS: Extra flags to give to the Cpreprocessor: 用于指定额外的标志给 C 预处理器。这可以包括宏定义、头文件搜索路径等。通常在这里...
换句话说,控制了 gcc/g++ 就等于控制了所有四个步骤。从 Makefile 规则中的编译命令可以看出,编译工具的行为全靠 CC/CXX CPPFLAGS CFLAGS/CXXFLAGS LDFLAGS 这几个变量在控制。当然理论上控制编译工具行为的还应当有 AS ASFLAGS ARFLAGS 等变量,但是实践中基本上没有软件包使用它们。
在这个Makefile中,我们定义了三个目录变量:SRCDIR表示源代码目录,OBJDIR表示编译生成的目标文件目录,BINDIR表示可执行文件输出目录。我们还定义了一些编译选项:CC表示C编译器,CXX表示C++编译器,CFLAGS表示C编译选项,CXXFLAGS表示C++编译选项。 接下来,我们使用wildcard函数和filter函数来获取源代码文件列表和目标文件列表...
.o 的目标的依赖目标会自动推导为 .cc 或 .C (建议使用 .cc 作为C++源文件的后缀,尽量不用 .C ),并且其生成命令是$(CXX) –c $(CPPFLAGS) $(CFLAGS)。 编译Pascal 程序 .o 的目标的依赖目标会自动推导为 .p ,并且其生成命令是 $(PC) –c $(PFLAGS) 。
$(CC)-c $(CFLAGS) $^ -o $@%.o : %.cpp$(CXX)-c $(CFLAGS) $^ -o $@ .PHONY : clean clean :rm-f *.orm-f ../bin/excute #install: #mvExcute excute;cp-f ordermisd ../bin/; Makefile常用理解: 参数: makefile里用${temp} ...
CXX: C++编译器,默认为g++ (5)自动变量 $@指代当前目标 $< 指代第一个前置条件 6.Makefile中的其他细节 (1)makefile中的加号+,减号-和at号@的含义 @ 使命令在被执行前不被回显 - 使任何命令行的任何非零退出状态都被忽略。7.示例的Makefile (1)hello.cpp #include<stdio.h>int main(){ print...
CXXFLAGS := $(CFLAGS) # The next bit checks to see whether rm is in your djgpp bin # directory; if not it uses del instead, but this can cause (harmless) # `File not found ‘ error messages. If you are not using DOS at all, ...