March 01, 1998
Control How COM Marshals Your Data
Listing 7: makefile Project makefile
CPPFLAGS= /D_WINDOWS /W3 /GX /GD /MT /DWIN32 /D_WIN32_DCOM /DSTRICT
DLLCPPFLAGS=/D_WINDOWS /W3 /GX /GD /DWIN32 /D_WINDLL
LINKFLAGS = -subsystem:windows -incremental:yes
CONSOLEFLAGS=/subsystem:console
GUIFLAGS=/subsystem:windows4.0
GUILIBS=user32.lib gdi32.lib
DLLLIBS=msvcrt.lib rpcrt4.lib advapi32.lib ole32.lib oldnames.lib
DLLFLAGS=-dll
!if "$(DEBUG)" != "0"
CPPFLAGS=$(CPPFLAGS) /D_DEBUG /Od /Zi
LINKFLAGS=$(LINKFLAGS) -debug:full
LIBS=ole32.lib uuid.lib user32.lib advapi32.lib
!else
CPPFLAGS=$(CPPFLAGS) /DNDEBUG /O2
LINKFLAGS=$(LINKFLAGS) -debug:none
LIBS=ole32.lib uuid.lib user32.lib advapi32.lib
!endif
all: client.exe server.exe sobj.dll
dlldata.c:
midl sobj.idl
.cpp.obj:
$(CPP) $(CPPFLAGS) /c $<
.c.obj:
$(CPP) $(CPPFLAGS) /c $<
# How to build the client
client.exe: client.obj
link $(LINKFLAGS) $(CONSOLEFLAGS) -out:client.exe @<<
client.obj
$(LIBS)
<<
# How to build the server
server.exe: server.obj register.obj
link $(LINKFLAGS) $(CONSOLEFLAGS) -out:server.exe @<<
server.obj
register.obj
$(LIBS)
<<
# How to build the proxy/stub DLL
sobj.dll: dlldata.obj sobj_i.obj sobj_p.obj marshal.obj
link /DEF:sobj.def $(LINKFLAGS) $(DLLFLAGS) -out:sobj.dll @<<
marshal.obj
dlldata.obj
sobj_i.obj
sobj_p.obj
$(DLLLIBS)
<<
# Dependencies
client.obj: marsamp.h client.cpp
server.obj: marsamp.h server.cpp
register.obj: marsamp.h register.c
dlldata.obj: dlldata.c
sobj_p.obj: sobj_p.c
sobj_i.obj: sobj_i.c
marshal.obj: marshal.c
| |||||||||