发一下牢骚和主题无关:
1.有了这个配置文件,你可以用任何ide或文本编辑器,除了不支持makefile的ide。
2.makefile的利益不用说吧,不依赖ide,如果g++或ide更新了的话makefile什么都不需要做。但是基于项目文件的编译配置就难了,比如vs2010项目如果想用vs2005编译的话。。。。
3.makefile从编译到链接选项都可以自己控制。
4个文件,当然有时间的话也可以自己改改减少数量,自己删除注释吧。
主 Makefile,放在项目根目录下.
## There exist several targets which are by default empty and which can be # used for execution of your targets. These targets are usually executed # before and after some main targets. They are: ## .build-pre: called before 'build' target# .build-post: called after 'build' target# .clean-pre: called before 'clean' target# .clean-post: called after 'clean' target# .clobber-pre: called before 'clobber' target# .clobber-post: called after 'clobber' target# .all-pre: called before 'all' target# .all-post: called after 'all' target# .help-pre: called before 'help' target# .help-post: called after 'help' target## Targets beginning with '.' are not intended to be called on their own.## Main targets can be executed directly, and they are:# # build build a specific configuration# clean remove built files from a configuration# clobber remove all built files# all build all configurations# help print help mesage# # Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and# .help-impl are implemented in nbproject/makefile-impl.mk.## Available make variables:## CND_BASEDIR base directory for relative paths# CND_DISTDIR default top distribution directory (build artifacts)# CND_BUILDDIR default top build directory (object files, ...)# CONF name of current configuration# CND_PLATFORM_${CONF} platform name (current configuration)# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration)# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration)# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration)# CND_PACKAGE_DIR_${CONF} directory of package (current configuration)# CND_PACKAGE_NAME_${CONF} name of package (current configuration)# CND_PACKAGE_PATH_${CONF} path to package (current configuration)## NOCDDL# Environment MKDIR=mkdir -pCP=cpCCADMIN=CCadmin# buildbuild: .build-init .build-post.build-init:.build-pre:# Add your pre 'build' code here... windres --input-format=rc -O coff -i resources/style.rc -o build/style.o --define __WXMSW__ --include-dir E:/software/Lib/gui/wxWidgets-2.9.2/include .build-post: .build-impl# Add your post 'build' code here... ${CP} E:/software/Lib/gui/wxWidgets-2.9.2/win32/release/share/wxmsw292u_adv_gcc_custom.dll dist/Debug/MinGW-Windows/ ${CP} E:/software/Lib/gui/wxWidgets-2.9.2/win32/release/share/wxmsw292u_core_gcc_custom.dll dist/Debug/MinGW-Windows/ ${CP} E:/software/Lib/gui/wxWidgets-2.9.2/win32/release/share/wxbase292u_gcc_custom.dll dist/Debug/MinGW-Windows/ ${CP} E:/software/MinGW/bin/libgcc_s_dw2-1.dll dist/Debug/MinGW-Windows/ # cleanclean: .clean-post.clean-pre:# Add your pre 'clean' code here....clean-post: .clean-impl# Add your post 'clean' code here...# clobberclobber: .clobber-post.clobber-pre:# Add your pre 'clobber' code here....clobber-post: .clobber-impl# Add your post 'clobber' code here...# allall: .all-post.all-pre:# Add your pre 'all' code here....all-post: .all-impl# Add your post 'all' code here...# build testsbuild-tests: .build-tests-post.build-tests-pre:# Add your pre 'build-tests' code here....build-tests-post: .build-tests-impl# Add your post 'build-tests' code here...# run teststest: .test-post.test-pre:# Add your pre 'test' code here....test-post: .test-impl# Add your post 'test' code here...# helphelp: .help-post.help-pre:# Add your pre 'help' code here....help-post: .help-impl# Add your post 'help' code here...# include project implementation makefileinclude nbproject/Makefile-impl.mk# include project make variablesinclude nbproject/Makefile-variables.mk
根目录下建nbproject文件夹,放入以下文件。
Makefile-variables.mk 这个文件不需要管
## Generated - do not edit!## NOCDDL#CND_BASEDIR=`pwd`CND_BUILDDIR=buildCND_DISTDIR=dist# Debug configurationCND_PLATFORM_Debug=MinGW-Windows# Release configurationCND_PLATFORM_Release=MinGW-Windows
Makefile-impl.mk 这个文件不需要管
每日一道理 爱,有的时候不需要山盟海誓的承诺,但她一定需要细致入微的关怀与问候;爱,有的时候不需要梁祝化蝶的悲壮,但她一定需要心有灵犀的默契与投合;爱,有的时候不需要雄飞雌从的追随,但她一定需要相濡以沫的支持与理解。
# # Generated Makefile - do not edit! # # Edit the Makefile in the project folder instead (../Makefile). Each target# has a pre- and a post- target defined where you can add customization code.## This makefile implements macros and targets common to all configurations.## NOCDDL# Building and Cleaning subprojects are done by default, but can be controlled with the SUB# macro. If SUB=no, subprojects will not be built or cleaned. The following macro# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf# and .clean-reqprojects-conf unless SUB has the value 'no'SUB_no=NOSUBPROJECTS=${SUB_${SUB}}BUILD_SUBPROJECTS_=.build-subprojectsBUILD_SUBPROJECTS_NO=BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}CLEAN_SUBPROJECTS_=.clean-subprojectsCLEAN_SUBPROJECTS_NO=CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}# Project NamePROJECTNAME=# Active ConfigurationDEFAULTCONF=DebugCONF=${DEFAULTCONF}# All ConfigurationsALLCONFS=Debug Release # build.build-impl: .build-pre .validate-impl .depcheck-impl @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf# clean.clean-impl: .clean-pre .validate-impl .depcheck-impl @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf# clobber .clobber-impl: .clobber-pre .depcheck-impl @#echo "=> Running $@..." for CONF in ${ALLCONFS}; \ do \ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ done# all .all-impl: .all-pre .depcheck-impl @#echo "=> Running $@..." for CONF in ${ALLCONFS}; \ do \ "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ done# build tests.build-tests-impl: .build-impl .build-tests-pre @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf# run tests.test-impl: .build-tests-impl .test-pre @#echo "=> Running $@... Configuration=$(CONF)" "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf# dependency checking support.depcheck-impl: @echo "# This code depends on make tool being used" >.dep.inc @if [ -n "${MAKE_VERSION}" ]; then \ echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ echo "include \$${DEPFILES}" >>.dep.inc; \ echo "endif" >>.dep.inc; \ else \ echo ".KEEP_STATE:" >>.dep.inc; \ echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ fi# configuration validation.validate-impl: @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ then \ echo ""; \ echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ echo "See 'make help' for details."; \ echo "Current directory: " `pwd`; \ echo ""; \ fi @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ then \ exit 1; \ fi# help.help-impl: .help-pre @echo "This makefile supports the following configurations:" @echo " ${ALLCONFS}" @echo "" @echo "and the following targets:" @echo " build (default target)" @echo " clean" @echo " clobber" @echo " all" @echo " help" @echo "" @echo "Makefile Usage:" @echo " make [CONF=] [SUB=no] build" @echo " make [CONF= ] [SUB=no] clean" @echo " make [SUB=no] clobber" @echo " make [SUB=no] all" @echo " make help" @echo "" @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," @echo " also build subprojects." @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," @echo " also clean subprojects." @echo "Target 'clobber' will remove all built files from all configurations and," @echo " unless 'SUB=no', also from subprojects." @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," @echo " also build subprojects." @echo "Target 'help' prints this message." @echo ""
Makefile-Debug.mk 往里添加编译文件和编译链接参数,如果是Release,添加一个Makefile-Release.mk文件,把Debug替换为Release便可。
## Generated Makefile - do not edit!## Edit the Makefile in the project folder instead (../Makefile). Each target# has a -pre and a -post target defined where you can add customized code.## This makefile implements configuration specific macros and targets.# EnvironmentMKDIR=mkdirCP=cpGREP=grepNM=nmCCADMIN=CCadminRANLIB=ranlibCC=gcc.exeCCC=g++.exeCXX=g++.exeFC=gfortran.exeAS=as.exe# MacrosCND_PLATFORM=MinGW-WindowsCND_CONF=DebugCND_DISTDIR=dist# Include project Makefileinclude Makefile# Object DirectoryOBJECTDIR=build/${CND_CONF}/${CND_PLATFORM}# Object FilesOBJECTFILES= \ ${OBJECTDIR}/src/my_app.o \ ${OBJECTDIR}/src/my_frame.o# C Compiler FlagsCFLAGS=# CC Compiler FlagsCXXFLAGS=-D_LARGEFILE_SOURCE=unknown -DwxDEBUG_LEVEL=0 -DWXUSINGDLL -D__WXMSW__ -mthreads -m32 -Wall -MMD -MP -MF $@.d CPPFLAGS=\-IE:/software/Lib/gui/wxWidgets-2.9.2/include \-IE:/software/Lib/gui/wxWidgets-2.9.2/win32/release/share/include \-Iinclude# Fortran Compiler FlagsFFLAGS=# Assembler FlagsASFLAGS=# Link Libraries and OptionsLDLIBSOPTIONS= \-Wl,--subsystem,windows -mwindows \-LE:/software/Lib/gui/wxWidgets-2.9.2/win32/release/share \-lwx_mswu_adv-2.9 -lwx_mswu_core-2.9 -lwx_baseu-2.9 \build/style.o# Build Targets.build-conf: ${BUILD_SUBPROJECTS} "${MAKE}" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/test_wx.exedist/Debug/MinGW-Windows/test_wx.exe: ${OBJECTFILES} ${MKDIR} -p dist/Debug/MinGW-Windows ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/test_wx -Wl,-s ${OBJECTFILES} ${LDLIBSOPTIONS} ${OBJECTDIR}/src/my_app.o: src/my_app.cpp ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -o ${OBJECTDIR}/src/my_app.o src/my_app.cpp${OBJECTDIR}/src/my_frame.o: src/my_frame.cpp ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d $(COMPILE.cc) -o ${OBJECTDIR}/src/my_frame.o src/my_frame.cpp# Subprojects.build-subprojects:# Clean Targets.clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r build/Debug ${RM} dist/Debug/MinGW-Windows/test_wx.exe# Subprojects.clean-subprojects:# Enable dependency checking.dep.inc: .depcheck-implinclude .dep.inc
会Makefile一点道理的会知道往哪里添加编译项。
参考例子的配置下载链接:
文章结束给大家分享下程序员的一些笑话语录: 程序员打油诗
写字楼里写字间,写字间里程序员; 程序人员写程序,又拿程序换酒钱。 酒醒只在网上坐,酒醉还来网下眠; 酒醉酒醒日复日,网上网下年复年。 但愿老死电脑间,不愿鞠躬老板前; 奔驰宝马贵者趣,公交自行程序员。 别人笑我忒疯癫,我笑自己命太贱; 不见满街漂亮妹,哪个归得程序员。--------------------------------- 原创文章 By
build和configuration---------------------------------