makefile

该文展示了如何使用C++编写包含多个源文件的程序,包括主文件main.cpp、头文件head.h以及实现不同运算的函数文件。文中提到了四个Makefile示例,分别演示了不同的编译链接方式,从简单的直接编译到利用对象文件的组织,以及使用通配符和自动规则来自动化构建过程。
摘要由CSDN通过智能技术生成

当前目录内文件

main.cpp

#include<iostream>
#include"head.h"
using namespace std;
int main(){
    int a = 20, b = 12;
    std::cout << "a = " << a << ", b = " << b << std::endl;
    std::cout << "a + b = " << add(a, b) << std::endl;
    std::cout << "a - b = " << subtract(a, b) << std::endl;
    std::cout << "a * b = " << multiply(a, b) << std::endl;
    std::cout << "a / b = " << divide(a, b) << std::endl;
    return 0;
}

head.h

int add(int a, int b);
double divide(int a, int b);
int multiply(int a, int b);
int subtract(int a, int b);

add.cpp

#include"head.h"
int add(int a, int b){return a + b;}

div.cpp

#include"head.h"
double divide(int a, int b){return (double)a/b;}

mult.cpp

#include"head.h"
int multiply(int a, int b){return a * b;}

sub.cpp

#include"head.h"
int subtract(int a, int b){return a - b;}

makefile

截图

 

 

 

makefile1

app:sub.cpp mult.cpp div.cpp add.cpp main.cpp
	g++ sub.cpp mult.cpp div.cpp add.cpp main.cpp -o app

makefile2

app:sub.o mult.o div.o add.o main.o
	g++ sub.cpp mult.o div.o add.o main.o -o app
sub.o:sub.cpp
	g++ -c sub.cpp -o sub.o
mult.o:mult.cpp
	g++ -c mult.cpp -o mult.o
div.o:div.cpp
	g++ -c div.cpp -o div.o
add.o:add.cpp
	g++ -c add.cpp -o add.o
main.o:main.cpp
	g++ -c main.cpp -o main.o

makefile3

#定义变量
src = sub.o add.o mult.o div.o main.o
target=app

$(target):$(src)
	$(CXX) $(src) -o $(target)
	g++ sub.cpp mult.o div.o add.o main.o -o app
%.o:%.cpp
	$(CXX) -c $< -o $@

makefile4

#定义变量
src = $(wildcard ./*.cpp)
objs = $(patsubst %.cpp, %.o, $(src))
target=app

$(target):$(objs)
	$(CXX) $(objs) -o $(target)
%.o:%.cpp
	$(CXX) -c $< -o $@
.PHONY:#伪目标 使用make clean调用clean规则时不会检测clean文件的更新
clean:
	rm $(objs) -f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值