[置顶] 简单的、智能搜索源文件的 Makefile

如果,你正在为寻找一个通用简易的、智能搜索源文件的 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!

爽了吧。还可以添加一个源代码,而不用修改 makefile。 例如添加一个接口文件 HelloWorld.cpp 用来封装 sayHelloWorld() 方法


HelloWorld.h

// HelloWorld.h
#ifndef _HELLOWORLD_H
#define _HELLOWORLD_H

void sayHelloWorld();

#endif


HelloWorld.cpp

// HelloWorld.cpp
#include "HelloWorld.h"

#include <iostream>

void sayHelloWorld() {
  std::cout << "Hello World!" << std::endl;
}


以及修改以后的 main.cpp

// 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


你可能感兴趣的:(makefile,wildcard)