This section shows an example makefile for a Windows Client-Library application for use by a Microsoft Visual C/C++ compiler, version 4.0:
##################################################################
# Microsoft makefile for sample programs
#
#################################################################
MAKEFILE=MAKEFILE!ifndef SYBASESYBASEHOME=c:\sybase!elseSYBASEHOME=$(SYBASE)!endifCOMPILE_DEBUG = 1# Compiler AND linker flags !ifdef COMPILE_DEBUGCFLAGS = /W3 /MD /nologo /Zi /DWIN32 LFLAGS= /MAP /SUBSYSTEM:CONSOLE /DEBUG /DEBUGTYPE:cv !elseCFLAGS = /W3 /MD /nologo /Od /DWIN32LFLAGS= /MAP /SUBSYSTEM:CONSOLE!endifASYNCDEFS = -DUSE_SIG_HANDLER=0HDRS = example.h exutils.hMTHDRS = example.h thrdutil.h thrdfunc.h## Where to get includes and libraries## SYBASE is the environment variable for sybase home directory#SYBINCPATH = $(SYBASEHOME)\$(SYBASE_OCS)\includeBLKLIB = $(SYBASEHOME)\$(SYBASE_OCS)\lib\libblk.libCTLIB = $(SYBASEHOME)\$(SYBASE_OCS)\lib\libct.lib CSLIB = $(SYBASEHOME)\$(SYBASE_OCS)\lib\libcs.libSYSLIBS = kernel32.lib advapi32.lib msvcrt.lib# The generalized how to make an .obj rule.c.obj: cl /I. /I$(SYBINCPATH) $(ASYNCDEFS) $(CFLAGS) -Fo$@ -c $<all: exasync compute csr_disp getsend rpc blktxt i18n multthrd usedir firstapp exconfig secct wide_rpc wide_dynamic wide_curupd wide_computeuni: uni_firstapp uni_csr_disp uni_compute uni_blktxt uni_rpcexasync compute csr_disp getsend rpc blktxt i18n multthrd usedir firstapp exconfig secct twophase: $*.exe @echo Sample '$*' was builtwide_rpc wide_dynamic wide_curupd wide_compute: $*.exe @echo Sample '$*' was builtuni_firstapp uni_csr_disp uni_compute uni_blktxt uni_rpc: $*.exe @echo Sample '$*' was builtsample.exe: sample.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe sample.obj $(SYSLIBS) exasync.exe: ex_alib.obj ex_amain.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe ex_alib.obj ex_amain.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)compute.exe: compute.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)wide_curupd.exe: wide_curupd.obj exutils.obj wide_util.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj wide_util.obj $(SYSLIBS) $(CTLIB) $(CSLIB)wide_dynamic.exe: wide_dynamic.obj exutils.obj wide_util.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj wide_util.obj $(SYSLIBS) $(CTLIB) $(CSLIB)wide_compute.exe: wide_compute.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj wide_compute.obj $(SYSLIBS) $(CTLIB) $(CSLIB)exconfig.exe: exconfig.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)firstapp.exe: firstapp.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj $(SYSLIBS) $(CTLIB) $(CSLIB)csr_disp.exe: csr_disp.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)getsend.exe: getsend.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)rpc.exe: rpc.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)wide_rpc.exe: wide_rpc.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)blktxt.exe: blktxt.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB) $(BLKLIB) i18n.exe: i18n.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB) multthrd.exe: multthrd.obj thrdfunc.obj thrdutil.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj thrdfunc.obj thrdutil.obj $(SYSLIBS) $(CTLIB) $(CSLIB) usedir.exe: usedir.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB) secct.exe: secct.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB) uni_firstapp.exe: uni_firstapp.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj $(SYSLIBS) $(CTLIB) $(CSLIB)uni_csr_disp.exe: uni_csr_disp.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)uni_compute.exe: uni_compute.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)uni_blktxt.exe: uni_blktxt.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB) $(BLKLIB) uni_rpc.exe: uni_rpc.obj exutils.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj exutils.obj $(SYSLIBS) $(CTLIB) $(CSLIB)twophase.exe: twophase.obj ctpr.obj ctxact.obj $(MAKEFILE) link $(LFLAGS) -out:$*.exe $*.obj ctpr.obj ctxact.obj $(SYSLIBS) $(CTLIB) $(CSLIB)clean: -del *.obj
-del *.map
-del *.exe
-del *.err
-del *.ilk
-del *.pdb
There are a few things to note in this example:
INTEL libraries are represented.
Sybase libraries are made for Win32 applications.
SUBSYSTEM:CONSOLE indicates a console application.
Refer to the appropriate compile-and-link Microsoft documentation for additional information.