# Microsoft Developer Studio Project File - Name="preaprutil" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **

# TARGTYPE "Win32 (x86) External Target" 0x0106

CFG=preaprutil - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE 
!MESSAGE NMAKE /f "preaprutil.mak".
!MESSAGE 
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE 
!MESSAGE NMAKE /f "preaprutil.mak" CFG="preaprutil - Win32 Release"
!MESSAGE 
!MESSAGE Possible choices for configuration are:
!MESSAGE 
!MESSAGE "preaprutil - Win32 Release" (based on "Win32 (x86) External Target")
!MESSAGE "preaprutil - Win32 Debug" (based on "Win32 (x86) External Target")
!MESSAGE "preaprutil - x64 Release" (based on "Win32 (x86) External Target")
!MESSAGE "preaprutil - x64 Debug" (based on "Win32 (x86) External Target")
!MESSAGE 

# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""

!IF  "$(CFG)" == "preaprutil - Win32 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /nologo /f NUL"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "preaprutil.exe"
# PROP BASE Bsc_Name "preaprutil.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /nologo /f NUL"
# PROP Rebuild_Opt "/a"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "preaprutil - Win32 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /nologo /f NUL"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "preaprutil.exe"
# PROP BASE Bsc_Name "preaprutil.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /nologo /f NUL"
# PROP Rebuild_Opt "/a"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "preaprutil - x64 Release"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /nologo /f NUL"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "preaprutil.exe"
# PROP BASE Bsc_Name "preaprutil.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /nologo /f NUL"
# PROP Rebuild_Opt "/a"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ELSEIF  "$(CFG)" == "preaprutil - x64 Debug"

# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ""
# PROP BASE Intermediate_Dir ""
# PROP BASE Cmd_Line "NMAKE /nologo /f NUL"
# PROP BASE Rebuild_Opt "/a"
# PROP BASE Target_File "preaprutil.exe"
# PROP BASE Bsc_Name "preaprutil.bsc"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ""
# PROP Intermediate_Dir ""
# PROP Cmd_Line "NMAKE /nologo /f NUL"
# PROP Rebuild_Opt "/a"
# PROP Bsc_Name ""
# PROP Target_Dir ""

!ENDIF 

# Begin Target

# Name "preaprutil - Win32 Release"
# Name "preaprutil - Win32 Debug"
# Name "preaprutil - x64 Release"
# Name "preaprutil - x64 Debug"

!IF  "$(CFG)" == "preaprutil - Win32 Release"

!ELSEIF  "$(CFG)" == "preaprutil - Win32 Debug"

!ELSEIF  "$(CFG)" == "preaprutil - x64 Release"

!ELSEIF  "$(CFG)" == "preaprutil - x64 Debug"

!ENDIF 

# End Target
# End Project
