一、文件结构
.
├── 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