先上链接:

http://www.ruanyifeng.com/blog/2015/02/make.html

 

demo:

 

# <target> : <prerequisites> 
# [tab]  <commands>

.PHONY: clean

make: clean all


clean:
    # hello
    @# rm *.o
    # end

all: hello.o main.o
    gcc main.o hello.o -o run

hello: hello.cpp
    gcc -c hello.cpp -o hello.o

main.o: main.cpp
    gcc -c main.cpp -o main.o

 

#ifndef _HELLO_H

#define _HELLO_H

void sayHello();

void sayHello( const char * hello );

#endif


=========


#ifndef _HELLO_C
#define _HELLO_C

#include <cstdio>
#include "hello.hpp"

void sayHello(){
    printf("i am saying %s", "hello");
}

void sayHello( const char * hello ){
    if (hello==NULL) {
        hello = "hello";
    }
    printf("i am saying %s", hello);
}

#endif


===========


#include "hello.hpp"

int main(int argc, const char** argv){
    sayHello();
    sayHello("how are you ?");
}

 

摘要:

如果Make命令运行时没有指定目标,默认会执行Makefile文件的第一个目标。

$ make
上面代码执行Makefile文件的第一个目标。

 

.PHONY : clean
这样执行"make clean"会无视"clean"文件存在与否。

 

result.txt: source.txt
cp source.txt result.txt


source.txt:
echo "this is the source" > source.txt

 

.RECIPEPREFIX = >
all:
> echo Hello, world