1 概述
Makefile,一种用于自动化构建和编译程序的文本文件,通常用于C和C++等编程语言的项目中,包含了一系列规则和命令,描述了如何将源代码文件编译成可执行程序或库。通常包括以下内容:
1 目标(Target):描述了需要构建的最终产物,例如可执行程序的名称。
2 依赖关系(Dependencies):描述了目标所依赖的源文件、头文件或其他目标。
3 命令(Commands):描述了如何根据依赖关系生成目标的具体步骤和命令。
通过定义这些规则,Makefile可以帮助开发人员自动化构建过程,使得项目的管理和维护更加高效和可靠。
target: dependencies
commands
2 指令
2.1.1 赋值
2.1 ?=
一种变量赋值的语法,称为条件赋值,延迟赋值。
在Makefile中,
?=
是一种变量赋值操作符,用于定义一个变量的默认值。它的作用是,只有当该变量尚未被赋值时,才会将其设置为指定的值。具体语法如下:
variable ?= value
如果变量
variable
尚未被赋值,则将其设置为value
;否则,保持原有的赋值不变。
2.1.2 :=
":=" 是简单赋值操作符。它将右侧的值赋给左侧的变量
VAR := value
2.1.3 +=
"+=" 是追加赋值操作符。它将右侧的值追加到左侧的变量的末尾,并且如果左侧变量之前已经有了值,新的值将被添加到原有值的后面。
VAR += value
2.2 指定路径
2.2.1 头文件
-I ,用于指定头文件的搜索路径,例如:
-I/path/to/header
2.2.2 库文件
-l ,用于指定要链接的库
例如,如果你需要链接一个名为 libexample.so 的共享库,你可以使用以下命令进行链接:
-lexample
注意:通常库文件的命名规则是以 lib 开头,然后是库的名称,最后是扩展名(如 .so、.a)。但在使用 -l 选项时,只需要指定库的名称,去除 lib 前缀和扩展名。
2.2.3 库文件搜索路径
-L, 用于指定库文件搜索路径。
例如,如果你的库文件位于 /path/to/lib 目录下,你可以使用以下命令将该目录添加到库文件搜索路径中:
-L/path/to/lib
参考
无。