通过头文件和makefile编译多个cpp文件

首先需要知道我们用到的三种文件:

1、.cpp这是c++的源文件,源码。

2、.h头文件,包含需要用到的所有cpp文件

3、.o文件,生成的可执行文件。

这三个小代码上传到github主页:study_collection/makefile at main · stu-yzZ/study_collection (github.com)

目录

一、文件描述

二、通过头文件编译

三、通过cmake文件编译


一、文件描述

我们有三个cpp文件,一个头文件。需要注意的是这四个文件都在同一个目录下。

下面代码是三个cpp文件代码。

#第一个主文件 main
#include 
#include "head.h"

using namespace std;

int main()
{
   fun1();
   fun2();

   cout<<"this is main function"<
#include "head.h"

using namespace std;

void fun1()
{
    cout<<"this is fun1 function"<
#include "head.h"
using namespace std;

void fun2()
{
    cout<<"this is fun2 function"<

下面是头文件代码,需要和上面三个cpp文件名对应起来。

#头文件
#ifndef _FUNCTIONS_H_
#define _FUNCTIONS_H_
void fun1();
void fun2();
#endif

二、通过头文件编译

首先确保四个文件书写正确。

编译命令:

g++ main.cpp function1.cpp function2.cpp -o main #将三个文件编译并连接为一个main文件

ls # 查看当前目录的文件,可以看到多了一个main文件 

./main #执行main文件 便会输出打印结果

通过头文件和makefile编译多个cpp文件_第1张图片

三、通过cmake文件编译

1、首先构建Makefile文件(直接将该文件命名为Makefile

下面是Makefile代码,代码插进去没能识别注释,我把截图放在下面

#version1
hello :main.cpp function1.cpp function2.cpp #create file named hello which depend on these three cpp file
	g++ main.cpp function1.cpp function2.cpp #注意前面是个tab不是space


#version2
# CXX = g++
# TARGET = hello
# OBJ = main.o function1.o function2.o

# $(TARGET): $(OBJ) #TARGET depends on OBJ
# 	$(CXX) -o $(TARGET) $(OBJ)

# main.o: main.cpp
# 	$(CXX) -c main.cpp

# function1.o: function1.cpp
# 	$(CXX) -c function1.cpp

# function2.o: function2.cpp
# 	$(CXX) -c function2.cpp


#version3
# CXX = g++
# TARGET = hello
# OBJ = main.o function1.o function2.o

# CXXFLAGS = -c -Wall
# $(TARGET): $(OBJ) #TARGET depends on OBJ
# 	$(CXX) -o $@ $^

# %.o: %.cpp
# 	$(CXX) $(CXXFLAGS) $< -o $@

# .PHONY: clean
# clean:
# 	rm -f *.o $(TARGET)




通过头文件和makefile编译多个cpp文件_第2张图片

这里面有三个版本的makefile文件。对第一个版本进行说明,

版本一:

#version1
hello :main.cpp function1.cpp function2.cpp #create file named hello which depend on these three cpp file
	g++ main.cpp function1.cpp function2.cpp

以上代码可以理解为:

第一行:要生成hello文件,依赖于这三个cpp源文件。

第二行:使用g++命令编译这三个文件。

到此makefile文件生成完成。接下来使用make命令执行makefile文件

make #直接输入make便可执行该makefile文件

或者

make -f makefile 

输出结果如下图:

通过头文件和makefile编译多个cpp文件_第3张图片

第一行是使用g++编译这三个cpp文件,然后使用ls查看可以发现多出来一个a.out文件。这是默认名称,然后执行该文件即可得到输出。

你可能感兴趣的:(c++,开发语言)