Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X
# File Name
MAKEFILENAME = MAKEFILE
# Output Name
OUTPUT = program
# Machine Type
PRO_MACHINE_TYPE = x86e_win64
CREO2_DATECODE=D:
# Executable names
EXE = $(OUTPUT).exe
EXE_DLL = $(OUTPUT).dll
# Pro/Toolkit Source & Machine Loadpoint (EXTERNAL USE - DEFAULT)
PROTOOL_SRC = $(CREO2_DATECODE)/protoolkit
PROTOOL_SYS = $(PROTOOL_SRC)/$(PRO_MACHINE_TYPE)
# Pro/Toolkit Source & Machine Loadpoint (PTC INTERNAL USE)
#PROTOOL_SRC = $(PTCSRC)/protoolkit
#PROTOOL_SYS = $(PTCSYS)
# Application Definitions
PROTK_APPLS = $(PROTOOL_SRC)/protk_appls
PROTK_APPLINCS = $(PROTK_APPLS)/includes
PROTK_INCS = $(PROTOOL_SRC)/includes
PROTK_EXAMP = $(PROTK_APPLS)/pt_examples
PROTK_UTILS = $(PROTK_EXAMP)/pt_utils
# Include File Paths
INCS = -I. \
-I$(PROTK_APPLINCS) \
-I$(PROTK_INCS) \
# Compiler Flags
CC = cl
DEBUG = /Od /Z7
MACH = -DPRO_MACHINE=36 -DPRO_OS=4
CCFLAGS = -c -fp:precise -DPRO_USE_VAR_ARGS /EHa $(DEBUG)
CFLAGS = $(CCFLAGS) $(INCS) $(MACH)
# Libraries
PTCLIBS = $(PROTOOL_SYS)/obj/protoolkit.lib $(PROTOOL_SYS)/obj/pt_asynchronous.lib
PTCLIBS_DLL = $(PROTOOL_SYS)/obj/protk_dll.lib
LIBS = libcmt.lib kernel32.lib user32.lib wsock32.lib advapi32.lib mpr.lib winspool.lib netapi32.lib psapi.lib gdi32.lib shell32.lib comdlg32.lib ole32.lib ws2_32.lib
OUTPUT_DIR = x64\Debug
# Object files
OBJS = $(OUTPUT_DIR)\pt_utils.obj
OBJS = $(OBJS) $(OUTPUT_DIR)\$(OUTPUT).obj
# Linker
LINK = link -out:
#Executable applications compiled using WinMain() instead of main() should set the subsystem to windows instead of console.
LINKFLAGS = /subsystem:console /debug /machine:amd64
# EXE target
exe: $(EXE)
$(EXE) : $(OBJS) $(PTCLIBS)
@echo Start at
@date /T
@time /T
@echo PROTOOL_SRC = $(PROTOOL_SRC)
@echo PROTOOL_SYS = $(PROTOOL_SYS)
$(LINK)$(OUTPUT_DIR)\$(EXE) $(LINKFLAGS) @<<longline.list
$(OBJS) $(PTCLIBS) $(LIBS)
<<
@echo Finished at
@date /T
@time /T
# del $(OBJS)
# Dll target
dll: $(EXE_DLL)
$(EXE_DLL) : $(OBJS) $(PTCLIBS_DLL)
@echo Start at
@date /T
@time /T
@echo PROTOOL_SRC = $(PROTOOL_SRC)
@echo PROTOOL_SYS = $(PROTOOL_SYS)
$(LINK)$(OUTPUT_DIR)\$(EXE_DLL) $(LINKFLAGS) /dll @<<longline.list
$(OBJS) $(PTCLIBS_DLL) $(LIBS)
<<
@echo Finished at
@date /T
@time /T
# del $(OBJS)
# object dependencies
$(OUTPUT_DIR)\pt_utils.obj: $(PROTK_UTILS)/pt_utils.c
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(PROTK_UTILS)/pt_utils.c
$(OUTPUT_DIR)\$(OUTPUT).obj: $(OUTPUT).cpp
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(OUTPUT).cpp
rebuild_exe:
if exist $(OUTPUT_DIR) del $(OBJS) $(OUTPUT_DIR)\$(EXE) $(OUTPUT_DIR)\*.lib $(OUTPUT_DIR)\*.exp $(OUTPUT_DIR)\*.ilk $(OUTPUT_DIR)\*.pdb
nmake -f $(MAKEFILENAME) exe
rebuild_dll:
if exist $(OUTPUT_DIR) del $(OBJS) $(OUTPUT_DIR)\$(EXE_DLL) $(OUTPUT_DIR)\*.lib $(OUTPUT_DIR)\*.exp $(OUTPUT_DIR)\*.ilk $(OUTPUT_DIR)\*.pdb
nmake -f $(MAKEFILENAME) dll
#Clean Command Line setting in VS2010 cannot be used in Makefile project, so no such command is set.
CREO2_DATECODE=D: → Not Required
# Pro/Toolkit Source & Machine Loadpoint (EXTERNAL USE - DEFAULT)
PROTOOL_SRC = $(CREO2_DATECODE)/protoolkit
PROTOOL_SRC = $(PROE_INSTALL_PATH)/protoolkit
→ Set as Your System and User Environmental Variable. The Path should be Creo Installation path
# object dependencies
$(OUTPUT_DIR)\pt_utils.obj: $(PROTK_UTILS)/pt_utils.c
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(PROTK_UTILS)/pt_utils.c → change this line like below one
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(PROTK_UTILS)/pt_utils.c → This line should start with tab character
$(OUTPUT_DIR)\$(OUTPUT).obj: $(OUTPUT).cpp
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(OUTPUT).cpp → change this line like below one
$(CC) $(CFLAGS) /Fo"$(OUTPUT_DIR)\\" $(OUTPUT).cpp → This line should start with tab character
#Clean Command Line setting in VS2010 cannot be used in Makefile project, so no such command is set.
# Can add below clean commands
clean :
del $(OBJS)
del $(EXE)
nmake -f $(MAKEFILENAME)
clean_dll :
del $(OBJS)
del $(EXE_DLL)
nmake -f $(MAKEFILENAME) dll
Please check and let me know if you got any errors.