解决修改头文件后,Makefile重新编译(make)失效的问题

事情是这样的,我在一个c++项目中需要用到一个头文件和若干对象。举例如下:

  1. func1.h
#include <iostream>

void func_1();
  1. func1.cpp
#include "func1.h"

using namespace std;

void func_1()
{
   
    cout << "in the fuction 1." << endl;
}
  1. test.h
#include <iostream>
using namespace std
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
对于多目录和头文件编译,可以使用Makefile来管理和编译代码。 以下是一个例子: ``` # Makefile # 设置编译器和编译选项 CC = g++ CFLAGS = -Wall -g # 设置源文件目录和头文件目录 SRCDIR = src INCDIR = include # 设置目标文件目录和可执行文件目录 OBJDIR = obj BINDIR = bin # 设置目标文件和可执行文件名称 TARGET = program OBJS = $(OBJDIR)/main.o $(OBJDIR)/func.o # 编译规则 all: $(BINDIR)/$(TARGET) $(BINDIR)/$(TARGET): $(OBJS) $(CC) $(CFLAGS) $(OBJS) -o $@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp $(CC) $(CFLAGS) -c $< -o $@ -I $(INCDIR) # 清理规则 clean: rm -rf $(OBJDIR)/*.o $(BINDIR)/$(TARGET) ``` 在这个例子中,我们假设有以下目录结构: ``` project/ ├── Makefile ├── include/ │ └── func.h └── src/ ├── main.cpp └── func.cpp ``` 其中,`include/`存放头文件,`src/`存放源文件。使用Makefile编译时,会将编译生成的目标文件放在`obj/`目录中,将可执行文件放在`bin/`目录中。 Makefile中,`SRCDIR`和`INCDIR`分别指向源文件目录和头文件目录。在编译规则中,使用`-I`选项指定头文件目录。`OBJS`中的目标文件路径是相对于`OBJDIR`的。 在编译时,Makefile会按照`SRCDIR`和`INCDIR`中指定的路径查找源文件和头文件。生成的目标文件和可执行文件会放在`OBJDIR`和`BINDIR`中指定的目录中。 使用命令`make`即可编译生成可执行文件。使用命令`make clean`可以清除生成的目标文件和可执行文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值