如果,你正在为寻找一个通用简易的、智能搜索源文件的 Makefile 而奔波的话,那么下边的Demo你有可能看得上它:
例如,你有一个目录,这个目录里目前只是生成一个二进制文件,其源码全部在这里,那么你可以尝试第一个版本的 Makefile
# Makefile, 2012-06-15 T1738 # TODO # ---------------------------------- NAME = AppDemo VERSION = 1.0.0 RELEASE = 01 # ---------------------------------- BIN = $(NAME) OBJS = $(patsubst %.cpp,%.o,$(wildcard $(SRC_DIR)/*.cpp)) # TODO # BEGIN ---------------------------------- # Folders SRC_DIR = . # Flags CXXFLAGS = -Wall CXXFLAGS += -I$(SRC_DIR) CPPFLAGS = -D_DEBUG LDFLAGS = -L$(SRC_DIR) LIBS = -lpthread # END ---------------------------------- .PHONY: all clean all: $(BIN) $(BIN): $(OBJS) $(CXX) $(CPPFLAGS) $(LDFLAGS) $^ -o $@ $(LIBS) %.o: %.cpp $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $^ -o $@ clean: $(RM) $(OBJS) $(BIN)
$ls --color main.cpp makefile
其中 main.cpp 是一个hello world小程序,下面编译并运行
$make g++ -Wall -I. -D_DEBUG -c main.cpp -o main.o g++ -D_DEBUG -L. main.o -o AppDemo -lpthread $ls --color AppDemo main.cpp main.o makefile $./AppDemo Hello World!
HelloWorld.h
// HelloWorld.h #ifndef _HELLOWORLD_H #define _HELLOWORLD_H void sayHelloWorld(); #endif
// HelloWorld.cpp #include "HelloWorld.h" #include <iostream> void sayHelloWorld() { std::cout << "Hello World!" << std::endl; }
// main.cpp #include "HelloWorld.h" int main(int argc, char **argv) { sayHelloWorld(); return 0; }
$make clean rm -f ./HelloWorld.o ./main.o AppDemo $make g++ -Wall -I. -D_DEBUG -c HelloWorld.cpp -o HelloWorld.o g++ -Wall -I. -D_DEBUG -c main.cpp -o main.o g++ -D_DEBUG -L. HelloWorld.o main.o -o AppDemo -lpthread $./AppDemo Hello World!
下载 - http://download.csdn.net/detail/wxqee/4375731