Linux下使用Makefile文件

创建文件夹:

  1. src 文件夹:用于存放源代码文件。

    • main.c:主要的 C 源代码文件。
    • kbd_lnx.cpp:键盘 Linux 实现的 C++ 源代码文件。
  2. include 文件夹:用于存放头文件。

    • kbd_lnx.h:键盘 Linux 实现的头文件。
  3. obj 文件夹:用于存放编译生成的目标文件。

    • 在编译时,将生成的 main.o 和 kbd_lnx.o 放在这个文件夹中。
  4. bin 文件夹:用于存放生成的可执行文件。

    • 在链接时,将生成的 run 可执行文件放在这个文件夹中。

Makefile文件代码:

CC = gcc
CXX = g++
CFLAGS = -Wall
CXXFLAGS = -Wall

SRC_DIR = src
INCLUDE_DIR = include
OBJ_DIR = obj
BIN_DIR = bin

SRCS = $(wildcard $(SRC_DIR)/*.c $(SRC_DIR)/*.cpp)
OBJS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS)))

all: $(BIN_DIR)/run

$(BIN_DIR)/run: $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -I$(INCLUDE_DIR) -c $< -o $@

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
	$(CXX) $(CXXFLAGS) -I$(INCLUDE_DIR) -c $< -o $@

clean:
	rm -f $(OBJ_DIR)/*.o $(BIN_DIR)/run

在上述 Makefile 中,通过以下变量来定义文件夹路径:

  • SRC_DIR:源代码文件夹路径。
  • INCLUDE_DIR:头文件文件夹路径。
  • OBJ_DIR:目标文件文件夹路径。
  • BIN_DIR:可执行文件文件夹路径。

使用 wildcard 函数来获取 $(SRC_DIR) 中的所有源代码文件,并使用 patsubst 函数将源文件转换为目标文件路径。这样,$(OBJS) 变量将包含所有的目标文件。

在目标 $(BIN_DIR)/run 中,使用 $@ 表示目标文件的路径,$^ 表示所有的依赖文件路径。

在规则 $(OBJ_DIR)/%.o 中,使用 $< 表示第一个依赖文件的路径,$@ 表示目标文件的路径。

最后,添加 clean 目标,以删除新的目标文件和可执行文件路径。

确保在项目根目录下创建相应的文件夹,并将相应的源代码文件放在正确的文件夹中。这样就可以使用更新后的 Makefile 进行编译和链接,生成可执行文件。

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值