先上链接:
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