⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile.base

📁 SVC最新更新代码
💻 BASE
📖 第 1 页 / 共 2 页
字号:
#########################################################

# check CONFIG parameter

#########################################################



!IF ("$(CONFIG)" != "LIBRARY") && ("$(CONFIG)" != "CONSOLE") && ("$(CONFIG)" != "MFC")

!MESSAGE Set CONFIG to LIBRARY, CONSOLE or MFC!

!ERROR An invalid configuration is specified!

!ENDIF



#########################################################

# executables used

#########################################################



CPP		= cl

AR		= lib

LD		= link

RSC		= rc

ASM		= nasmw



#########################################################

# output file names

#########################################################



!IF "$(CONFIG)" == "LIBRARY"

# the libraries that can be created

STAT_DEBUG_OUT		= $(LIB_DIR)\lib$(PRJ_NAME)d.lib

STAT_RELEASE_OUT	= $(LIB_DIR)\lib$(PRJ_NAME).lib

DYN_DEBUG_OUT		= $(BIN_DIR)\$(PRJ_NAME)d.dll

DYN_RELEASE_OUT		= $(BIN_DIR)\$(PRJ_NAME).dll

#

!ELSEIF ("$(CONFIG)" == "CONSOLE") || ("$(CONFIG)" == "MFC")

# the executables that can be created

STAT_DEBUG_OUT		= $(BIN_DIR)\$(PRJ_NAME)sd.exe

STAT_RELEASE_OUT	= $(BIN_DIR)\$(PRJ_NAME)s.exe

DYN_DEBUG_OUT		= $(BIN_DIR)\$(PRJ_NAME)d.exe

DYN_RELEASE_OUT		= $(BIN_DIR)\$(PRJ_NAME).exe

#

!ENDIF



#########################################################

# assembler flags

#########################################################



ASMFLAGS			= -f win32 $(DEFS)

DEBUG_ASMFLAGS		= -g

RELEASE_ASMFLAGS	=





#########################################################

# c compiler flags

#########################################################



# default cpp flags for all configurations

CPPFLAGS			= \

					-W3 \

					-GX \

					-D WIN32 \

					-D _MBCS \

					$(USER_INC_DIRS) \

					-I $(INC_DIR) \

					-FD \

					$(DEFS)



!IF "$(CONFIG)" == "LIBRARY"

# cpp flags for creating libraries					

CPPFLAGS			= $(CPPFLAGS) -D _WINDOWS -D _USRDLL

# cpp flags for creating static libraries

STAT_CPPFLAGS		= $(STAT_DEF)

# cpp flags for creating dynamic libraries

DYN_CPPFLAGS		= $(DYN_DEF)

#

!ELSEIF ("$(CONFIG)" == "CONSOLE")

# cpp flags for creating console applications

CPPFLAGS			= $(CPPFLAGS) -D _CONSOLE

# cpp flags for creating console applications static linked with MSysLib

STAT_CPPFLAGS		= $(STAT_DEF)

# cpp flags for creating console applications dynamic linked with MSysLib

DYN_CPPFLAGS		= $(DYN_DEF)

#

!ELSEIF ("$(CONFIG)" == "MFC")

# cpp flags for creating MFC applications

CPPFLAGS			= $(CPPFLAGS) -D _WINDOWS -D _AFXDLL

# cpp flags for creating MFC applications static linked with MSysLib

STAT_CPPFLAGS		= $(STAT_DEF)

# cpp flags for creating MFC applications dynamic linked with MSysLib

DYN_CPPFLAGS		= $(DYN_DEF)

#

!ENDIF



# debug cpp flags

DEBUG_CPPFLAGS		= \

					-MDd \

					-Gm \

					-Zi \

					-Od \

					-D _DEBUG \

					-GZ 

							

# dynamic debug cpp flags for all

DYN_DEBUG_CPPFLAGS	= \

					-Fp$(OBJ_DIR)\$(PRJ_NAME)dd.pch \

					-Fd$(OBJ_DIR)\$(PRJ_NAME)dd



# static debug cpp flags for all

STAT_DEBUG_CPPFLAGS	= \

					-Fp$(OBJ_DIR)\$(PRJ_NAME)sd.pch \

					-Fd$(OBJ_DIR)\$(PRJ_NAME)sd



# release cpp flags for all

RELEASE_CPPFLAGS	= \

					-MD \

					-O2 \

					-D NDEBUG 



# dynamic release cpp flags for all

DYN_RELEASE_CPPFLAGS	= \

					-Fp$(OBJ_DIR)\$(PRJ_NAME)dr.pch \

					-Fd$(OBJ_DIR)\$(PRJ_NAME)dr



# static release cpp flags for all

STAT_RELEASE_CPPFLAGS	= \

					-Fp$(OBJ_DIR)\$(PRJ_NAME)sr.pch \

					-Fd$(OBJ_DIR)\$(PRJ_NAME)sr





#########################################################

# precompiled header cpp flags

#########################################################



# cpp flags for using precomiled header file

USE_PCH_CPPFLAGS		= -Yu$(PCH_NAME).h 

# cpp flags for creating precomiled header file

CREATE_PCH_CPPFLAGS		= -Yc$(PCH_NAME).h 



DYN_RELEASE_PCH_OBJ		= $(OBJ_DIR)\$(PCH_NAME).dr_o

DYN_DEBUG_PCH_OBJ		= $(OBJ_DIR)\$(PCH_NAME).dd_o

STAT_RELEASE_PCH_OBJ	= $(OBJ_DIR)\$(PCH_NAME).sr_o

STAT_DEBUG_PCH_OBJ		= $(OBJ_DIR)\$(PCH_NAME).sd_o





#########################################################

# linker flags

#########################################################



# linker flags for all

LDFLAGS				= -machine:I386



!IF "$(CONFIG)" == "LIBRARY"

# linker flags for library

LDFLAGS				= $(LDFLAGS) -dll 

#

!ELSEIF ("$(CONFIG)" == "CONSOLE")

# linker flags for console

LDFLAGS				= $(LDFLAGS) -subsystem:console

#

!ELSEIF ("$(CONFIG)" == "MFC")

# linker flags for MFC

LDFLAGS				= $(LDFLAGS) -subsystem:windows

#

!ENDIF



# debug linker flags for all

DEBUG_LDFLAGS		= \

					-incremental:yes \

					-debug \

					-pdbtype:sept



# release linker flags for all

RELEASE_LDFLAGS		= -incremental:no





!IF "$(CONFIG)" == "LIBRARY"

# debug linker flags for library

DYN_DEBUG_LDFLAGS	= \

					-pdb:$(BIN_DIR)\$(PRJ_NAME)d.pdb \

					-out:$(DYN_DEBUG_OUT) \

					-implib:$(LIB_DIR)\$(PRJ_NAME)d.lib				

#

# release linker flags for library

DYN_RELEASE_LDFLAGS	= \

					-pdb:$(BIN_DIR)\$(PRJ_NAME).pdb \

					-out:$(DYN_RELEASE_OUT) \

					-implib:$(LIB_DIR)\$(PRJ_NAME).lib



!ELSEIF ("$(CONFIG)" == "CONSOLE") || ("$(CONFIG)" == "MFC")

# static debug linker flags for console and MFC

STAT_DEBUG_LDFLAGS	= \

					-pdb:$(BIN_DIR)\$(PRJ_NAME)sd.pdb \

					-out:$(STAT_DEBUG_OUT)

#

# dynamic debug linker flags for console and MFC

DYN_DEBUG_LDFLAGS	= \

					-pdb:$(BIN_DIR)\$(PRJ_NAME)d.pdb \

					-out:$(DYN_DEBUG_OUT)				

#

# static release linker flags for console and MFC

STAT_RELEASE_LDFLAGS = \

					-pdb:$(BIN_DIR)\$(PRJ_NAME)s.pdb \

					-out:$(STAT_RELEASE_OUT)

#

# dynamic release linker flags for console and MFC

DYN_RELEASE_LDFLAGS	= \

					-pdb:$(BIN_DIR)\$(PRJ_NAME).pdb \

					-out:$(DYN_RELEASE_OUT)

#

!ENDIF





#########################################################

# resource flags

#########################################################



# typical flags for the resource compiler

RSCFLAGS			= -l 0x409



!IF "$(RSC_NAME)" != ""

DYN_RELEASE_RES		= $(OBJ_DIR)\$(RSC_NAME)dr.res

DYN_DEBUG_RES		= $(OBJ_DIR)\$(RSC_NAME)dd.res

#

!IF ("$(CONFIG)" == "CONSOLE") || ("$(CONFIG)" == "MFC")

STAT_RELEASE_RES	= $(OBJ_DIR)\$(RSC_NAME)sr.res

STAT_DEBUG_RES		= $(OBJ_DIR)\$(RSC_NAME)sd.res

#

!ENDIF

#

!ENDIF





#########################################################

# objects that have to be created

#########################################################



# the object types that have to be created			

DYN_RELEASE_OBJS	= $(OBJS:.o=.dr_o) $(DYN_RELEASE_RES)

DYN_DEBUG_OBJS		= $(OBJS:.o=.dd_o) $(DYN_DEBUG_RES)

STAT_RELEASE_OBJS	= $(OBJS:.o=.sr_o) $(STAT_RELEASE_RES)

STAT_DEBUG_OBJS		= $(OBJS:.o=.sd_o) $(STAT_DEBUG_RES)





#########################################################

# rules

#########################################################



# the used suffixes

.SUFFIXES: .cpp .asm .dr_o .dd_o .sr_o .sd_o



#########################################################

# asm rules

#########################################################



# create dynamic release objects

{$(SRC_DIR)}.asm{$(OBJ_DIR)}.dr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR)}.asm{$(OBJ_DIR)}.dd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<



# create dynamic release objects

{$(SRC_DIR)}.asm{$(OBJ_DIR)}.sr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR)}.asm{$(OBJ_DIR)}.sd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<







# create dynamic release objects

{$(SRC_DIR1)}.asm{$(OBJ_DIR)}.dr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR1)}.asm{$(OBJ_DIR)}.dd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<



# create dynamic release objects

{$(SRC_DIR1)}.asm{$(OBJ_DIR)}.sr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR1)}.asm{$(OBJ_DIR)}.sd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<







# create dynamic release objects

{$(SRC_DIR2)}.asm{$(OBJ_DIR)}.dr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR2)}.asm{$(OBJ_DIR)}.dd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<



# create dynamic release objects

{$(SRC_DIR2)}.asm{$(OBJ_DIR)}.sr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR2)}.asm{$(OBJ_DIR)}.sd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<







# create dynamic release objects

{$(SRC_DIR3)}.asm{$(OBJ_DIR)}.dr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR3)}.asm{$(OBJ_DIR)}.dd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<



# create dynamic release objects

{$(SRC_DIR3)}.asm{$(OBJ_DIR)}.sr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR3)}.asm{$(OBJ_DIR)}.sd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<







# create dynamic release objects

{$(SRC_DIR4)}.asm{$(OBJ_DIR)}.dr_o: 

	@ $(ASM) $(ASMFLAGS) $(RELEASE_ASMFLAGS) -o $@ $<



# create dynamic debug objects

{$(SRC_DIR4)}.asm{$(OBJ_DIR)}.dd_o: 

	@ $(ASM) $(ASMFLAGS) $(DEBUG_ASMFLAGS) -o $@ $<

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -