Makefile
五山口老法师
腾讯后台开发工程师
展开
-
Makefile:条件编译
在源代码里面如果这样是定义的:#ifdef MACRONAME//可选代码#endif那在makefile里面gcc -D MACRONAME=MACRODEF或者gcc -D MACRONAME这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。对于GCC编译器,有如下选项: -D macro=string,等价于在头文件中定义:#define macro string。例如:-D TRUE=true,等价于:#...原创 2021-01-27 14:24:19 · 991 阅读 · 0 评论 -
C++11中Thread类简单使用的例子
代码如下:#include <iostream>#include <thread>#include <chrono>#include <future>#include <cmath> #include <vector>#include <cstdlib>using namespace std;void helloworld() { cout << "hello world" <&l原创 2020-07-30 15:52:08 · 504 阅读 · 0 评论 -
Makefile: -I(大写i)、-L、-l
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/incl原创 2020-07-26 22:25:47 · 907 阅读 · 0 评论 -
Makefile:自动化变量 $@,$^,$<,$?
Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:$@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:# 这是简化后的Makefilemain:main.o mytool1.o mytool2.ogcc -o $@ $^main.o:main.c mytool1.h mytool2.hgcc -c $<mytool1.o:mytool1.c原创 2020-07-24 17:06:35 · 1066 阅读 · 1 评论 -
Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endififeq ($(OPT),add) VRE += “Kelly!”endififeq ($(OPT),recov.原创 2020-07-24 15:03:18 · 212 阅读 · 0 评论