Makefile 指定输出目录

Makefile 指定输出目录

Makefile

OBJ = test.o
CC = gcc
OUTPUT_DIR = build

excute:
	@./test

test:$(OBJ)
	$(CC) -o $@ $(OUTPUT_DIR)/$< 


$(OBJ): %.o: %.c $(OUTPUT_DIR)
	$(CC) -c $< -o $(OUTPUT_DIR)/$@

$(OUTPUT_DIR):
	mkdir $(OUTPUT_DIR)

.PHONY : clean
clean:
	rm $(OUTPUT_DIR)/*.o test
	
其中变量OUTPUT_DIR 是输出目录 通过gcc 命令 -o 指定输出目录在build 文件夹
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在编写makefile时,我们需要考虑多级目录文件的情况并生成动态库。下面是一种可行的方法: 首先,我们需要定义一些变量,例如`CC`表示编译器,`CFLAGS`表示编译选项,`LDFLAGS`表示链接选项,`SRC_DIR`表示源代码目录,`OBJ_DIR`表示目标文件目录,`LIB_DIR`表示动态库输出目录,`LIB_NAME`表示动态库的名字。 接下来,我们可以使用makefile的自动变量来获取所有的源文件路径和目标文件路径。我们可以使用`wildcard`函数来获取源文件路径,使用`patsubst`函数将源文件路径转换为目标文件路径。然后,我们可以使用`$(OBJ_DIR)`和`$(LIB_DIR)`变量来创建目录。 ```makefile CC = gcc CFLAGS = -Wall -Werror LDFLAGS = -shared SRC_DIR = src OBJ_DIR = obj LIB_DIR = lib LIB_NAME = mylib.so # 获取源文件路径 SRC_FILES := $(wildcard $(SRC_DIR)/*.c) # 将源文件路径转换为目标文件路径 OBJ_FILES := $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRC_FILES)) # 创建目标文件目录 $(shell mkdir -p $(OBJ_DIR) $(LIB_DIR)) all: $(LIB_DIR)/$(LIB_NAME) # 编译动态库 $(LIB_DIR)/$(LIB_NAME): $(OBJ_FILES) $(CC) $(LDFLAGS) $^ -o $@ # 编译目标文件 $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -rf $(OBJ_DIR) $(LIB_DIR) ``` 现在,我们可以在命令行中使用`make`命令来编译生成动态库。makefile会自动找到源文件并将其编译为目标文件,然后将目标文件链接为一个动态库。最后,动态库将被输出指定目录中。 希望以上解答对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值