make 是一个用于构建(编译)项目的工具,它通过读取一个名为 Makefile 的文件来执行构建任务。make 命令有很多选项和参数,其中包括 -c 和 -f。
-
make -c:-
作用:指定进入指定的目录并执行相应的
Makefile。 -
示例:假设你有一个名为
project的目录,该目录包含
Makefile文件,你可以使用以下命令进入该目录并执行构建任务:
make -C project -
这将进入
project目录,并执行该目录下的Makefile文件中定义的构建规则。
-
-
make -f:-
作用:指定要使用的
Makefile文件的名称。 -
示例:假设你有一个名为
custom_makefile的文件,你可以使用以下命令执行构建任务:
make -f custom_makefile -
这将使用
custom_makefile文件作为构建规则的来源,而不是默认的Makefile。
-
-
异同点:
- 共同点: 两者都用于定制
make命令的行为,使其能够执行指定的构建规则。 - 不同点:
-c用于指定目录,而-f用于指定文件。-c通常与目录结合使用,而-f通常与文件名结合使用。
- 共同点: 两者都用于定制
示例:
假设有以下目录结构:
project/
|-- Makefile
|-- src/
| |-- main.c
| |-- utils.c
| |-- utils.h
project/Makefile 可能如下所示:
# project/MakefileCC = gcc
CFLAGS = -Wallall: my_programmy_program: src/main.c src/utils.c$(CC) $(CFLAGS) $^ -o $@clean:rm -f my_program
现在,如果你想在 project 目录外执行构建任务,可以使用 -C 选项:
make -C project
或者,如果你有一个自定义的 Makefile 文件,比如 custom_makefile:
make -f custom_makefile
这两者的选择取决于你想要执行的具体构建规则和文件组织结构。