makefile多文件

文件目录如下:

./child/child.cpp
./child/child.h
./makefile
./parent/parent.cpp
./parent/parent.h
./solution.cpp
./solution.h

文件solution.h

#ifndef  __H_SOLUTION_

#define __H_SOLUTION_

#include "iostream"

class Solution{
        public:
                void say();
};

#endif


文件parent.h

class Parent{
        public:
                void say();
};


文件parent.cpp

#include "parent.h"

#include "iostream"
using namespace std;

void Parent::say(){
        std::cout << "parent say" << std::endl;
}

文件child.h

#include "../solution.h"

class Child{
        public:
                void say();
};

文件child.cpp

#include "child.h"
#include "iostream"
using namespace std;

void Child::say(){
        std::cout << "child say " << std::endl;
}

文件solution.h

#ifndef  __H_SOLUTION_

#define __H_SOLUTION_

#include "iostream"

class Solution{
        public:
                void say();
};

#endif

文件solution.cpp

#include "solution.h"
#include "parent/parent.h"
#include "child/child.h"

int main(){
        Parent* p = new Parent();
        p->say();

        Child* c = new Child();
        c->say();

        return 0;
}

文件makefile


cc=g++
dst=hel.out
dir=$(shell find . -type d )
header=$(shell find ./ -iname "*.h" )
src=$(shell find ./ -iname "*.cpp" )
objs=$(src:%.cpp=%.o)


$(dst) : $(objs)
        $(cc) -o $(dst) $(objs)  -I ./

%.o: %.cpp  $(header)
        $(cc) -c $< -o $@   #其中 $<表示冒号后的依赖文件 *.cpp  $@代表生成的冒号
前面的 *.o

clean:
        rm -f $(shell find . -iname "*.o" -o -iname "*.exe"  -o -iname "*~" -o -iname   "*.out")

编译命令:

$ make
g++ -c child/child.cpp -o child/child.o   #其中 child/child.cpp表示冒号后的依赖文件 *.cpp  child/child.o代表生成的冒号前面的 *.o
g++ -c parent/parent.cpp -o parent/parent.o   #其中 parent/parent.cpp表示冒号后的依赖文件 *.cpp  parent/parent.o代表生成的冒号前面的 *.o
g++ -c solution.cpp -o solution.o   #其中 solution.cpp表示冒号后的依赖文件 *.cpp  solution.o代表生成的冒号前面的 *.o
g++ -o hel.out ./child/child.o ./parent/parent.o ./solution.o  -I ./


执行编译好的应用程序

$ ./hel.out
parent say
child say

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值