echo 正在编译XXX模块......正在编译XXX模块......
如果make执行时 , 带入make参数“-n”或“–just-print” , 那么其只是显示命令 , 但不会执行命令
变量中的变量
foo = $(bar)bar = $(ugh)ugh = Huh?# 使用":="更安全避免循环定义 , 前面的变量不能使用后面的变量 , 只能使用前面已定义好了的变量 。x := fooy := $(x) barx := later
命令执行
当依赖目标新于目标时 , 也就是当规则的目标需要被更新时 , make会一条一条的执行其后的命令 。需要注意的是 , 如果你要让上一条命令的结果应用在下一条命令时 , 你应该使用分号分隔这两条命令 。比如你的第一条命令是cd命令 , 你希望第二条命令得在cd之后的基础上运行 , 那么你就不能把这两条命令写在两行上 , 而应该把这两条命令写在一行上 , 用分号分隔 。如:
示例一:
exec:cd /home/hchenpwd示例二:exec:cd /home/hchen; pwd
当我们执行“make exec”时 , 第一个例子中的cd没有作用 , pwd会打印出当前的目录 , 而第二个例子中 , cd就起作用了 , pwd会打印出“/home/hchen” 。
例子
CXX = g++CXXFLAGS = -Wall -g -Isrc -Iinclude -Ibin -std=c++11 -ggdbBIN= binSRC= http://www.kingceram.com/post/srcINCLUDE = includeLIB= libLIBRARIES= EXECUTABLE= mainobjects = linear_regression.o dataset.o data_utils.o random_generator.oVPATH = $(INCLUDE):$(SRC):$(BIN)main: $(objects)$(CXX) $(CXXFLAGS) -o main $(BIN)/linear_regression.o $(BIN)/dataset.o $(BIN)/data_utils.o $(BIN)/random_generator.olinear_regression.o: random_generator.h data_utils.h dataset.h$(CXX) $(CXXFLAGS) -c $(SRC)/linear_regression.cpp -o $(BIN)/linear_regression.odataset.o: dataset.h$(CXX) $(CXXFLAGS) -c$(SRC)/dataset.cpp -o $(BIN)/dataset.odata_utils.o: data_utils.h$(CXX) $(CXXFLAGS) -c$(SRC)/data_utils.cpp -o $(BIN)/data_utils.orandom_generator.o: random_generator.h$(CXX) $(CXXFLAGS) -c$(SRC)/random_generator.cpp -o $(BIN)/random_generator.o# “.PHONY”表示 , clean是个伪目标文件.PHONY : cleanclean:-rm $(BIN)/*.o
更简单的写法:
CXX = g++CXXFLAGS = -Wall -g -Isrc -Iinclude-std=c++11 -ggdbBIN= binSRC= http://www.kingceram.com/post/srcINCLUDE = includeLIB= libLIBRARIES= EXECUTABLE= mainall: $(BIN)/$(EXECUTABLE)run: clean allclear @echo" Executing..."./$(BIN)/$(EXECUTABLE)$(BIN)/$(EXECUTABLE): $(SRC)/*.cpp@echo " Building..."$(CXX) $(CXX_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)clean:@echo " Clearing..." -rm $(BIN)/*
检测内存泄露
--tool= --leak-check=full ./a.out 智能指针 std::
是通过指针占有并管理另一对象 , 并在离开作用域时释放该对象的智能指针 。在下列两者之一发生时用关联的删除器释放对象:
这是个独占式的指针对象 , 在任何时间、资源只能被一个指针占有 , 当离开作用域 , 指针所包含的内容会被释放 。
std:
std:: 是通过指针保持对象共享所有权的智能指针 。多个对象可占有同一对象 。下列情况之一出现时销毁对象并解分配其内存:
gdb使用
对C/C++程序的调试 , 需要在编译前就加上-g选项:
$g++ -g hello.cpp -o hello
调试可执行文件:
$gdb
运行设置断点查看源代码打印表达式查询运行信息分割窗口编程感悟
对于for循环的变量有意义的变量尽可能的取名为有意义的变量名 , 特别是有嵌套的循环 , 避免出现以下情况:
for (int i = 0; i < 10; i++) {/// 此处省略一大堆代码for (int i = 0; i
- 紫禁城内为什么没有烟囱?又为何没有厕所?
- 采用 Linux 6.2 内核Nitrux 2.8 系统发布
- 揭秘杨贵妃两次出轨内幕被唐玄宗赶出皇宫真相
- 票房艺恩,桃姐内地票房多少
- 解密刘备的后宫:谁是昭烈皇帝刘备的贤内助?
- 解密:知名志怪古籍《山海经》包含哪些内容
- IT大咖直播内容盘点:看前IBM、国美架构师如何解析IT学习等难题……
- sd卡寿命一般多久
- oppo运行内存扩展功能利弊
- 二、Vue2.0项目结构内容及配置解析