使用makefile编译多文件C++工程

一、文件结构

.
├── inc
│ ├── function_a.h
│ ├── function_c.h
│ └── head.h
├── makefile.mk
└── src
├── function_a.cpp
├── function_b.cpp
└── main.cpp

二、makefile编辑

object = main.o function_a.o function_b.o
inc_DIR = -I ./inc/

test : $(object)
	g++ -Wall $(object) -o test
	rm $(object)

main.o : ./src/main.cpp
	g++ -Wall -c $(inc_DIR) ./src/main.cpp

function_a.o : ./src/function_a.cpp
	g++ -Wall -c $(inc_DIR) ./src/function_a.cpp

function_b.o : ./src/function_b.cpp
	g++ -Wall -c $(inc_DIR) ./src/function_b.cpp

.PHONY : clean
clean :
	rm test *.o
  • 编译C++文件时需要使用g++编译命令
  • -Wall生成所有警告信息
  • inc_DIR变量为存储自定义头文件的目录

三、各个文件内容

function_a.h

#ifndef __TEST_H__
#define __TEST_H__

void function_A();
void function_B();

#endif

function_c.h

#ifndef __FUNCTIONS_H__
#define __FUNCTIONS_H__

#include<stdio.h>

void function_C()
{
    printf("%s,%d\n", __FUNCTION__, __LINE__);
}

#endif

head.h

#ifndef __HEAD_H__
#define __HEAD_H__

#include<stdio.h>
#include<string.h>
#include<iostream>

using namespace std;

#endif

function_a.cpp

#include"head.h"
#include"function_a.h"

void function_A()
{
    printf("%s,%d\n", __FUNCTION__, __LINE__);
}

function_b.cpp

#include"head.h"
#include"function_a.h"

void function_B()
{
    printf("%s,%d\n", __FUNCTION__, __LINE__);
}

main.cpp

#include"head.h"
#include"function_a.h"
#include"function_c.h"

int main()
{
    printf("Hello world!!\n");
    function_A();
    function_B();
    function_C();
    return 0;
}

四、执行效果

Hello world!!
function_A,6
function_B,6
function_C,8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值