使用Makefile构建工程
2014-09-18 16:23
387 查看
1、工程目录如下
2、编写Makefile
1)myproject下的 Makefile
3) test/src下的Makefile
3、构建工程
/root/myproject/ |-- Makefile |-- bin |-- include |-- lib |-- libtest | `-- src | |-- Makefile | |-- libtest.cpp | `-- libtest.h `-- test |-- include | `-- test.h `-- src |-- Makefile `-- test.cpp
2、编写Makefile
1)myproject下的 Makefile
PROJECT_ROOT_PATH = /root/myproject MFLAGS = "CFLAGS=-w" DFLAGS = "CFLAGS=-w -g -fPIC -DDEBUG -DREENTRANT" all : cd $(PROJECT_ROOT_PATH)/libtest/src && $(MAKE) $(DFLAGS) TARGET_SO=1 && $(MAKE) install TARGET_SO=1 cd $(PROJECT_ROOT_PATH)/test/src && $(MAKE) $(DFLAGS) && $(MAKE) install clean : cd $(PROJECT_ROOT_PATH)/libtest/src && $(MAKE) clean TARGET_SO=1 cd $(PROJECT_ROOT_PATH)/test/src && $(MAKE) clean2)libtest/src下的 Makefile
LIB_NAME = libtest PROJECT_ROOT_PATH = /root/myproject ifdef TARGET_SO TARGET = $(LIB_NAME).so endif ifdef TARGET_AR TARGET = $(LIB_NAME).a endif CXXSRCS = $(wildcard *.cpp) CXXOBJS = $(patsubst %.cpp,%.o, $(CXXSRCS)) CXX = g++ AR = ar ARFLAGS = -rv SOFLAGS = -fPIC -shared INCPATH = -I. LDFLAGS = -L. LIBS = ifdef TARGET_SO $(TARGET): $(CXXOBJS) $(CXX) $(SOFLAGS) $^ -o $@ $(LDFLAGS) $(LIBS) endif ifdef TARGET_AR $(TARGET):$(CXXOBJS) $(AR) $(ARFLAGS) $@ $^ endif $(CXXOBJS): %.o: %.cpp $(CXX) $(INCPATH) $(CFLAGS) -c $< -o $@ .PHONY: install install: cp $(TARGET) $(PROJECT_ROOT_PATH)/lib mkdir -p $(PROJECT_ROOT_PATH)/include/$(LIB_NAME) cp *.h $(PROJECT_ROOT_PATH)/include/$(LIB_NAME) .PHONY: clean clean: -rm -rf $(CXXOBJS) -rm -rf $(TARGET) -rm -rf $(PROJECT_ROOT_PATH)/include/$(LIB_NAME) -rm -rf $(PROJECT_ROOT_PATH)/lib/$(TARGET)
3) test/src下的Makefile
EXE_NAME = test PROJECT_ROOT_PATH = /root/myproject CXXSRCS = $(wildcard *.cpp) CXXOBJS = $(patsubst %.cpp,%.o, $(CXXSRCS)) CXX = g++ INCPATH = -I../include -I$(PROJECT_ROOT_PATH)/include LDFLAGS = -L$(PROJECT_ROOT_PATH)/lib LIBS = -ltest $(EXE_NAME): $(CXXOBJS) $(CXX) $^ -o $@ $(LDFLAGS) $(LIBS) $(CXXOBJS): %.o: %.cpp $(CXX) $(INCPATH) $(CFLAGS) -c $< -o $@ .PHONY: install install: cp $(EXE_NAME) $(PROJECT_ROOT_PATH)/bin .PHONY: clean clean: -rm -rf $(CXXOBJS) -rm -rf $(EXE_NAME) -rm -rf $(PROJECT_ROOT_PATH)/bin/$(EXE_NAME)
3、构建工程
在/root/myproject下执行 make all make clean
相关文章推荐
- 使用MAVEN进行工程自动化构建(1)
- 使用MAVEN进行工程自动化构建
- 多目录工程构建Makefile的编写
- 学习使用CMake构建工程
- 使用Maven构建Java工程(Building Java Projects with Maven)
- 一统天下,使用ANT构建VS.NET工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- Eclipse中使用自己的makefile管理工程
- 使用rebar构建工程、执行单元测试、自动生成项目文档
- Maven构建Web工程和Tomcat7插件使用
- 使用CMake构建Ogre工程文件时的一些小细节
- 使用 SCons 代替 Makefile 快速构建应用程序
- 使用rebar构建erlang工程,手把手入门版
- 如何将makefile构建的工程导入C++test?
- 使用CMake构建Ogre工程文件时的一些小细节
- 使用MAVEN进行工程自动化构建(2)
- Eclipse中使用自己的makefile管理工程
- Eclipse CDT 导入 Makefile 构建的 C/C++ 工程
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法