Makefile中获取当前Makefile文件所在的目录
时间: 2024-03-29 07:34:10 浏览: 68
在 Makefile 中,可以使用内置变量 `$(CURDIR)` 来获取当前 Makefile 文件所在的目录的绝对路径。
例如:
```
DIR := $(CURDIR)
```
其中,`$(CURDIR)` 是内置变量,表示当前 Makefile 文件所在的目录的绝对路径,将其赋值给变量 DIR,就可以获取到当前 Makefile 文件所在的目录的路径。
相关问题
makefile中输出当前路径
在Makefile中输出当前路径通常指的是获取Makefile所在的目录路径,这可以通过特殊变量`$(CURDIR)`来实现,该变量在Makefile执行时自动设置为当前工作目录的绝对路径。
例如,你可以在Makefile中添加一个规则来输出当前路径:
```makefile
.PHONY: show-current-dir
show-current-dir:
@echo "当前路径是: $(CURDIR)"
```
上述规则定义了一个目标`show-current-dir`,当执行`make show-current-dir`时,它会使用`echo`命令输出当前的工作目录路径。这里的`@`符号用来抑制命令本身的输出,只显示命令执行的结果。
如果你想获取相对路径,可以使用`$(shell pwd)`命令来执行shell中的`pwd`命令,获取当前目录的路径。
```makefile
.PHONY: show-relative-dir
show-relative-dir:
@echo "当前路径是: $(shell pwd)"
```
执行`make show-relative-dir`同样会输出当前目录的路径,这个输出将是相对于文件系统根目录的绝对路径。
makefile 指定编译输出.o文件的路径
在Makefile中,如果你想要指定编译后的目标(.o)文件存储的位置,你可以使用`$(OBJECTS_DIR)`变量或者直接指定目录路径。通常的做法是在`.o:`规则前添加`VPATH`变量,它告诉Make如何查找源文件。例如:
```makefile
# 设置对象文件保存的默认路径
OBJECTS_DIR = obj
# 或者你可以针对特定的目标指定路径,如:
%.o: %.cpp
$(CC) $(CFLAGS) -c $< -o $(OBJECTS_DIR)/$@
# 如果你想更改某个特定对象文件的路径,可以在该规则下指定
my_custom_file.o: src/my_custom_file.cpp
$(CC) $(CFLAGS) -c $< -o custom_objects_dir/my_custom_file.o
# 使用VPATH指定查找源文件的路径
VPATH = src:custom_objects_dir
# 当然,你也可以通过$(@D)获取当前目标所在的目录,自动存放对象文件
%.o: %.cpp
$(CC) $(CFLAGS) -c $< -o @D/$(*F).o
```
在这个例子中,`.o`文件会被分别放在`obj`目录、`custom_objects_dir`(如果指定了特定路径的话)或者每个源文件所在目录里,取决于`VPATH`的设置。
阅读全文