感觉Linux下不会makefile少点什么。
先说下我的目录
test.cpp Makefile
bin/
include/
a.h
src/
a.cpp
lib
makefile 文件
vpath %.h include
vpath %.cpp src
objects= obj/test.o
INCLUDE = -I include
SUBDIRS=adir
LIB=-L lib -ltest
.PHONY:all
all:
.PHONY:getlib
getlib:lib/libtest.a
lib/libtest.a:obj/a.o
ar -r $@ $^
obj/a.o:a.cpp
g++ -c $< -o $@ $(INCLUDE)
.PHONY:getexe
getexe:bin/Handle
bin/Handle:$(objects)
g++ $^ -o $@ $(INCLUDE) $(LIB)
obj/test.o: test.cpp
g++ -c $< -o $@ $(INCLUDE)
.PHONY:clean
clean:
-rm lib/* obj/* bin/*
~
a.h
#ifndef _A_H_
#define _A_H_
#include<iostream>
using namespace std;
class A
{
public:
void Handle();
};
#endif
a.cpp
#include "a.h"
void A::Handle(){
cout<<"这是A的一个函数!"<<endl;
cout<<"这是A的一个函数!"<<endl;
}
test.cpp
#include"a.h"
#include<vector>
int main(){
A a1;
a1.Handle();
return 0;
}
执行:
make getlib
make getexe
就会在 bin下生成执行文件 lib下生成lib文件