makefile中将生成的.d与.o文件移动到另一个已经存在的aaa目录下
时间: 2024-05-05 19:20:09 浏览: 166
回答:
您可以在 makefile 文件中使用以下命令来移动生成的 .d 和 .o 文件到已经存在的 aaa 目录下:
```
$(shell mkdir -p aaa)
mv *.d *.o aaa/
```
其中,`$(shell mkdir -p aaa)` 命令用于创建 aaa 目录,如果该目录已经存在,则不影响程序的执行。`mv *.d *.o aaa/` 命令用于将当前目录下所有的 .d 和 .o 文件移动到 aaa 目录下。
请注意,在执行这些命令之前,请先确保当前目录下只有您需要移动的 .d 和 .o 文件,以免误操作导致其他文件也被移动。
相关问题
makefile中将生成的.d文件移动到另一个目录
可以使用以下命令将生成的 .d 文件移动到另一个目录:
```makefile
# 定义生成文件的存放目录
OBJ_DIR := obj
DEP_DIR := dep
# 使用VPATH指定源代码目录
VPATH := src
# 源文件列表
SRC := $(wildcard $(VPATH)/*.c)
# 根据源文件生成目标文件列表
OBJ := $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(SRC)))
DEP := $(patsubst %.c,$(DEP_DIR)/%.d,$(notdir $(SRC)))
# 生成依赖关系文件
$(DEP_DIR)/%.d : %.c
@set -e; rm -f $@; \
$(CC) -MM $(CFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,$(OBJ_DIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
# 生成目标文件
$(OBJ_DIR)/%.o : %.c
$(CC) $(CFLAGS) -c $< -o $@
# 让make命令不生成.d文件
MAKEFLAGS += --no-print-directory
.SUFFIXES:
.SUFFIXES: .c .o
# 默认执行规则
all : | $(OBJ_DIR) $(DEP_DIR) $(OBJ)
# 创建目标文件目录
$(OBJ_DIR) :
mkdir -p $(OBJ_DIR)
# 创建依赖关系文件目录
$(DEP_DIR) :
mkdir -p $(DEP_DIR)
# 引入依赖关系规则
include $(DEP)
# 定义清理规则
clean :
@rm -rf $(OBJ_DIR) $(DEP_DIR)
# 下面是具体的执行命令
# 将生成的.d和.o文件移动到其他目录
move : all
mkdir -p other_dir
mv $(DEP_DIR)/*.d other_dir
mv $(OBJ_DIR)/*.o other_dir
```
在上面的 makefile 文件中,通过定义目标文件目录 OBJ_DIR 和依赖关系文件目录 DEP_DIR 来指定生成文件的存放目录。同时,在编写依赖关系规则时,使用 sed 命令将 $*.o 和 $@ 分别替换为 $(OBJ_DIR)/$*.o 和 $@,这样生成的依赖关系文件中的依赖关系就指向了新的存放目录。
最后,在执行 `make move` 命令时,会生成所有的目标文件和依赖文件,并将它们移动到指定目录 other_dir 中。
makefile将文件中的.d .o文件移动到另一个目录
可以使用以下的Makefile规则将所有的.d和.o文件移动到另一个目录:
```
# 源文件目录和目标文件目录
SRC_DIR := src
OBJ_DIR := obj
# C++编译器和选项
CXX := g++
CXXFLAGS := -Wall -Wextra -pedantic -std=c++11
# 目标文件和可执行文件
TARGET := myprogram
OBJ := $(addprefix $(OBJ_DIR)/,$(notdir $(CPPFILES:.cpp=.o)))
DEP := $(OBJ:.o=.d)
# 默认目标
all: $(TARGET)
# 可执行文件的编译规则
$(TARGET): $(OBJ)
$(CXX) $(CXXFLAGS) -o $@ $^
# 依赖关系的规则
-include $(DEP)
# .o文件的编译规则
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
# .d文件的规则
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp
@mkdir -p $(OBJ_DIR)
$(CXX) $(CXXFLAGS) -MM -MT '$(OBJ_DIR)/$(notdir $(<:.cpp=.o))' $< -MF $@
# 将所有的.d和.o文件移动到另一个目录
move:
mv $(OBJ_DIR)/*.o $(ANOTHER_DIR)/
mv $(OBJ_DIR)/*.d $(ANOTHER_DIR)/
# 清除目标文件和可执行文件
clean:
rm -f $(OBJ) $(DEP) $(TARGET)
```
在Makefile中添加`move`规则,并将目标文件和依赖关系文件的路径修改为`$(ANOTHER_DIR)`。执行`make move`即可将所有的.d和.o文件移动到`$(ANOTHER_DIR)`目录中。
阅读全文