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

2023-12-20 00:06:17

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

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 <iostream>
#include "head.h"

using namespace std;

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

   cout<<"this is main function"<<endl;
   return 0;
};


#第二个函数文件 function1
#include <iostream>
#include "head.h"

using namespace std;

void fun1()
{
    cout<<"this is fun1 function"<<endl;
    return;
}


#第二个函数文件 function2
#include <iostream>
#include "head.h"
using namespace std;

void fun2()
{
    cout<<"this is fun2 function"<<endl;
    return;
}

下面是头文件代码,需要和上面三个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文件 便会输出打印结果

三、通过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文件。对第一个版本进行说明,

版本一:

#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?

输出结果如下图:

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

文章来源:https://blog.csdn.net/qq_39333636/article/details/135085673
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。