`
chenqi210
  • 浏览: 76761 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MinGW 比较通用的Makefile

阅读更多
#MinGW 5.1.6
.PHONY:clean tidy rebuild
SRCDIR		=	src
LIBDIR		=	lib
DOCSDIR		=	docs
BUILDDIR	=	build

CC		=	C:\MinGW\bin\g++.exe
SRCEXT		=	cpp
DEPEXT		=	depend
RM		=	del /f /q
MKDIR		=	mkdir
RMDIR		=	rmdir /q /s
FLAGS		=	-g -Wall -O3 #-save-temps #-fdump-class-hierarchy #-dump_class_hierarchy
LIBPATHS	=	-L"C:\MingW\lib" -L"${LIBDIR}"
LIBS		=	#-lopengl32 #-mwindows
SRCT		=	*.${SRCEXT}
SRCS		+=	${SRCT}
SRCS		+=	*/${SRCT}
SRCS		+=	*/*/${SRCT}
SRCS		+=	*/*/*/${SRCT}
SRCS		+=	*/*/*/*/${SRCT}
SRCS		+=	*/*/*/*/*/${SRCT}
SRC		=	${wildcard ${addprefix ${SRCDIR}/,${SRCS}}}
OBJ		=	${patsubst ${SRCDIR}/%.${SRCEXT},${BUILDDIR}/%.o,${SRC}}
DEP		=	${patsubst ${SRCDIR}/%.${SRCEXT},${BUILDDIR}/%.${DEPEXT},${SRC}}
BIN		=	${BUILDDIR}/${notdir ${CURDIR}.exe}

build: ${BIN}
rebuild: tidy build
${BIN}: ${OBJ}
	@echo make target: ${BIN}
	@${CC} ${FLAGS} $^ ${LIBPATHS} ${LIBS} -o $@
prepare:
	@echo prepare folders
	@if not exist ${BUILDDIR} (${MKDIR} ${BUILDDIR} && @echo make directory: ${BUILDDIR})
	@if not exist ${DOCSDIR} (${MKDIR} ${DOCSDIR} && @echo make directory: ${DOCSDIR})
#	@if not exist ${subst /,\,${dir ${@}}} (${MKDIR} ${subst /,\,${dir ${@}}} && @echo make directory: ${subst /,\,${dir ${@}}})
	@xcopy ${SRCDIR} ${BUILDDIR} /T /E
	
clean:
	@echo remove build directory and docs directory
	@if exist ${BUILDDIR} (@${RMDIR} ${BUILDDIR})
	@if exist ${DOCSDIR} (@${RMDIR} ${DOCSDIR})
tidy:
	@echo tidy dependencies, objects and binaries only
	${foreach file,${subst /,\,${OBJ}},@if exist ${file} (${RM} ${file}) &&}@echo on
	${foreach file,${subst /,\,${DEP}},@if exist ${file} (${RM} ${file}) &&}@echo on

sinclude ${DEP}
${BUILDDIR}/%.${DEPEXT}:${SRCDIR}/%.${SRCEXT}
	@if not exist ${BUILDDIR} (${MKDIR} ${BUILDDIR} && @echo make directory: ${BUILDDIR})
	@if not exist ${subst /,\,${dir ${@}}} (${MKDIR} ${subst /,\,${dir ${@}}} && @echo make directory: ${subst /,\,${dir ${@}}})
	@echo make dependency for ${patsubst ${SRCDIR}/%.${SRCEXT},${BUILDDIR}/%.o,${<}}
	@${CC} -MM -MT ${patsubst ${SRCDIR}/%.${SRCEXT},${BUILDDIR}/%.o,${<}} ${<} > ${@}
	@echo		@@echo make object: ${patsubst ${SRCDIR}/%.${SRCEXT},${BUILDDIR}/%.o,${<}} >> ${@}
	@echo		@@$${CC} $${FLAGS} -c -o $$@ $${filter %%.${SRCEXT},$$^^} >> ${@}

 

分享到:
评论

相关推荐

    本人写的makefile for mingw + wxWidgets

    我写的makefile for mingw + wxWidgets, makefile可作为通用模板,编译C++ wxWidgets GUI 库。另外带一个小例子,用户改makefile的头部就可以完成,资源文件链接,debug, release版本编译,shared 库 非shared 库...

    万能通用性Makefile/C++/C全自动编译实例

    Makefile编写实例: 1.前提是需要安装MInGw——c/c++编译器,不懂的可以私信我哈; 2.本程序是利用bat脚本直接运行...3.makefile为采用通用性规则编写,自动搜索所在目录中的代码,自动编译; 4.适应于编译C++/C代码。

    makefile example

    mingw makefile example

    支持SDCC编译器的自动编译的Makefile

    支持SDCC编译器的自动编译。使用make或mingw32-make实现目录内全源码自动编译的Makefile。

    Live555代码MinGW静态编译

    live555 原来执行“./genMakefile mingw”产生的makefile脱离msys就报缺少libgcc的库,先修改makefile让产生的exe文件可以直接双击运行。

    GCC编译器mingw版本v10.0.0

    MinGW(Minimalist GNU on Windows),将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不...

    MinGW使用MinGW使用

    MinGW使用MinGW使用

    【MinGW安装包】mingw-18.0.exe

    【MinGW安装包】mingw-18.0.exe

    mingw离线版mingw离线版

    mingw离线版mingw离线版mingw离线版mingw离线版mingw离线版

    MinGW(1)GNU工具集

    MinGW第一部分(共两部分) MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。 在网上很难下的,因为我最大上传限制在10M,所以只好分两次上传了。

    MinGW5.1.4

    MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。详情请参考&lt;http://www.mingw.org&gt;。 这里的“纯粹”是指「使用msvcrt.dll的应用程序」。无法使用MFC ...

    mingw32 下载安装包

    3.1:MinGW 是什么? MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发...

    MinGW (gcc9.2.0-2) 解压即可使用

    MinGW\var\cache\mingw-get\packages 这个目录下有MinGW Installation Manager下载的安装包,gcc-ada-9.2.0-2-mingw32-bin.tar.xz、gcc-c++-9.2.0-2-mingw32-bin.tar.xz、gcc-core-9.2.0-2-mingw32-bin.tar.xz、gcc-...

    mingw64位编译好的64位opencv2.4.13.6

    如果想节省时间,这是我在Windows下编译好的MINGW64位的opencv2.4.13.6,使用的cmake mingw Makefile方式编译的MINGW64位的opencv2.4.13.6,可以直接在QT(mingw64)版本开发工具内使用。下载后直接解压,将bin文件...

    QT5 MinGW64编译的 opencv4.1.1

    如果想节省时间,这是我在Windows下编译好的MINGW64位的opencv4.1.1,使用的cmake mingw Makefile方式编译的MINGW64位的opencv4.1.1,可以直接在QT5(mingw64)版本开发工具内使用。下载后直接解压,将bin文件添加到...

    MinGW.rar 完整安装包 Full 本地 绿色

    MinGW.rar 完整安装包,本地化,无需在线下载安装。因为MinGW本身不和windows注册表打交道,所以解压即可使用。 修改系统变量 PATH,增加 %MINGW_PATH%\bin;%MINGW_PATH%\libexec\gcc\mingw32\3.4.5; 增加变量: ...

    使用Mingw编译Windows平台下使用的fortran动态链接库

    为了能在32位和64位windows平台VS或VC环境下的C/C++工程能够调用fortran语言编写的科学计算库函数或者自己编写的fortran函数,实现C/C++与fortran的混编,这里采用MinGW软件在windows平台下用unix/linux环境下的GNU ...

    mingw5.14完整安装包(3)

    2、mingw-runtime-3.9.tar.gz MinGW 的运行支持库模块集合。 3、mingw-utils-0.3.tar.gz MinGW 常用工具集合。 4、binutils-2.15.91-20040904-1.tar.gz MinGW 支持gcc/g++的binutils 集合,如经典的ld 等。 5、gcc-...

    MinGw5.14(包含下载内容)

    MinGW(Minimalist GNU for Windows),又称mingw32,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。 GCC支持的语言大多在MinGW也受支持,其中涵盖C、C++、...

Global site tag (gtag.js) - Google Analytics