|
|
Line 1: |
Line 1: |
− | ===Building SourceMod Plugins with Visual Studio===
| |
| | | |
− | By: Cleveland “[[User:Daedilus|Daedilus]]” Raymond
| |
− |
| |
− | Date: January 15th, 2009
| |
− |
| |
− | ==Before We Begin==
| |
− | This tutorial will walk you through the process of creating a Custom Build Rule in Visual Studio for SourcePawn. Once you have completed
| |
− |
| |
− | the following steps, you will be able to create a Custom Build Rule for any tool that you may wish to integrate into Visual Studio.
| |
− |
| |
− |
| |
− |
| |
− | To learn more about custom build rules, go to http://msdn.microsoft.com/en-us/library/03t8bzzy.aspx
| |
− |
| |
− |
| |
− |
| |
− | In order for all of us to be able to share our projects, it is important that we use the same Custom Build Rules. I have provided the following
| |
− |
| |
− | link to the [http://members.cox.net/cleveraymond/SourceModVS/SourcePawn.rules SourcePawn for Visual Studio] Custom Build Rule file that was created during the process of making this tutorial. Save the file to
| |
− |
| |
− | <Visual Studio Path>\VC\VCProjectDefaults and complete the tutorial. This link, [http://members.cox.net/cleveraymond/SourceModVS/SourceModVS.zip MyPlugin], is where you can grab my test project.
| |
− |
| |
− |
| |
− |
| |
− | Note: .rules files are compatible with both, VS 2005 Pro and VS 2008 Pro (These are the only versions I have to test with.)
| |
− |
| |
− | ==Setting the path to the SourcePawn Compiler Using Environment Variables==
| |
− | Bring up the “System Properties” dialog and press the “Advanced” tab and then press the “Environment Variables” button.
| |
− |
| |
− | (To open the “System Properties” dialog, right click “My Computer”, choose “Properties” from the menu).
| |
− |
| |
− | [[Image:Step1.jpg]]
| |
− |
| |
− | Press the “New” button in the “System Variables” group.
| |
− |
| |
− | [[Image:Step2.jpg]]
| |
− |
| |
− | Name the variable, “SourcePawn” and set value to the path to spcomp.exe (without the trailing ’\’)
| |
− |
| |
− | ex. G:\Valve\HLServer\orangebox\dod\addons\sourcemod\scripting
| |
− |
| |
− | [[Image:Step3.jpg]]
| |
− |
| |
− | If you want to be able to use spcomp from cmd.exe, add the newly created environment variable, '''%SourcePawn%''', to the Path.
| |
− |
| |
− | [[Image:Step4.jpg]]
| |
− |
| |
− |
| |
− | ==Creating the Visual Studio Solution==
| |
− | To create a blank Visual Studio Solution, select File->New->Project…
| |
− |
| |
− | [[Image:Step5.jpg]]
| |
− |
| |
− | Name the solution and press OK.
| |
− |
| |
− | [[Image:Step6.jpg]]
| |
− |
| |
− |
| |
− | ==Adding the Visual Studio Project for SourceMod to the Solution==
| |
− | To add the Visual Studio Project for SourceMod to the Solution, right click the Solution, Add->New Project…
| |
− |
| |
− | [[Image:Step7.jpg]]
| |
− |
| |
− | Create a Win32 C++ Project. This will be used as the base for our SourceMod Plugin Project and press OK.
| |
− |
| |
− | [[Image:Step8.jpg]]
| |
− |
| |
− | Choose “DLL” for the application type and check “Empty project” under additional options and press Finish.
| |
− |
| |
− | [[Image:Step9.jpg]]
| |
− |
| |
− |
| |
− | ==Configuring the Visual Studio Project for SourceMod==
| |
− | To configure the Visual Studio Project for SourceMod, right click the Project, and choose “Properties” from the menu.
| |
− |
| |
− | Note: I removed “Header Files” and “Resource Files” filters since they are no longer needed. You can setup your own folder filters to how you see fit.
| |
− |
| |
− | (I modified my menu graphic to reduce the image size. “Properties” will be found at the bottom of the context menu)
| |
− |
| |
− | [[Image:Step10.jpg]]
| |
− |
| |
− | Set the Configuration to “All Configurations” and set the properties for “General” settings as defined below. Under
| |
− |
| |
− | “Project Default”, make sure the “Configuration Type” is set to “Utility”. This will keep us from building a DLL.
| |
− |
| |
− | [[Image:Step11.jpg]]
| |
− |
| |
− | '''(The next steps are optional. You can skip this and go to the next section, “Creating a Custom Build Rule for SourcePawn“.)'''
| |
− |
| |
− |
| |
− |
| |
− | Press the “Configuration Manager…” button located at the top right and edit the “Active solution configuration”.
| |
− |
| |
− | [[Image:Step12.jpg]]
| |
− |
| |
− | Remove the “Debug” configuration and rename the “Release” configuration to “Build”.
| |
− |
| |
− | [[Image:Step13.jpg]]
| |
− |
| |
− | Edit the “Active solution platform”.
| |
− |
| |
− | [[Image:Step14.jpg]]
| |
− |
| |
− | Rename the “Win32” platform to “SourcePawn”.
| |
− |
| |
− | [[Image:Step15.jpg]]
| |
− |
| |
− | Edit the project’s configuration.
| |
− |
| |
− | [[Image:Step16.jpg]]
| |
− |
| |
− | Remove the “Debug” configuration and rename the “Release” configuration to “Build” (Yes we already did this for the solution, not the project).
| |
− |
| |
− | [[Image:Step17.jpg]]
| |
− |
| |
− | We are finished setting up the Visual Studio Project. Now on to configuring the custom build options for SourcePawn (Unfortunately you can’t edit the project’s platform to change its name).
| |
− |
| |
− |
| |
− | ==Creating a Custom Build Rule for SourcePawn==
| |
− | To create a Custom Build Rule for SourcePawn, right click the Project, and choose “Custom Build Rules…” from the menu
| |
− |
| |
− | [[Image:Step18.jpg]]
| |
− |
| |
− | Press the “New Rule File…” button.
| |
− |
| |
− | [[Image:Step19.jpg]]
| |
− |
| |
− | Fill out the “New Rule File” dialog with the settings below and press the “Add Build Rule…” button.
| |
− |
| |
− | (Note: The default path for C++ .rules files is, “<Visual Studio Install Path>\VC\VCProjectDefaults”)
| |
− |
| |
− | [[Image:Step20.jpg]]
| |
− |
| |
− | Fill out the “Add Custom Build Rule” dialog with the settings below and press the “Add Build Rule…” button. The “Command Line”
| |
− |
| |
− | property has three entries separated by newlines. (Note: this is where we use the environment variable we made in the beginning)
| |
− |
| |
− |
| |
− | '''$(SourcePawn)\spcomp.exe "$(ProjectDir)[InputFile].sp" [CmdLine]'''
| |
− |
| |
− | '''if exist "$(ProjectDir)[InputFile].smx" move "$(ProjectDir)[InputFile].smx" "$(OutDir)\[OutputFile].smx"'''
| |
− |
| |
− | '''if exist "$(ProjectDir)[InputFile].asm" move "$(ProjectDir)[InputFile].asm" "$(OutDir)\[OutputFile].asm"'''
| |
− |
| |
− |
| |
− | Once you have filled in the settings, press the “Add Property…” button.
| |
− |
| |
− | [[Image:Step21.jpg]]
| |
− |
| |
− | Fill out the “Add User Property” dialog with the settings below. This will allow us to specify the output .smx file name In the project properties dialog.
| |
− |
| |
− | The “Description” property is set to: '''Specifies the input (.sp) file relative to the project directory. Do not include the file extension in the name.'''
| |
− |
| |
− | [[Image:Step22.jpg]]
| |
− |
| |
− | Add another property. This will allow us to specify the output .smx file name In the project properties dialog.
| |
− |
| |
− | The “Description” property is set to: '''Specifies the output (.smx) file name. Do not include the file extension in the name.'''
| |
− |
| |
− | [[Image:Step23.jpg]]
| |
− |
| |
− | Let’s add one more property to handle additional command line options.
| |
− |
| |
− | The “Description” property is set to: '''Specifies additional command line arguments. ex. -a'''
| |
− |
| |
− | [[Image:Step24.jpg]]
| |
− |
| |
− | Keep pressing the ok buttons until you are back to the main window.
| |
− |
| |
− | Congratulations you have setup SourcePawn to work with Visual Studio.
| |
− |
| |
− |
| |
− | ==Adding Syntax Highlighting for .sp and .inc Files==
| |
− | To add syntax highlighting, go to Tools->Options.
| |
− |
| |
− | [[Image:Step25.jpg]]
| |
− |
| |
− | Select Text Editor->File Extension and add .inc and .sp to the “Extension” list. Choose “Microsoft Visual C++” for the editor.
| |
− |
| |
− | Don’t close the “Options” dialog cause we need to tell Visual Studio where to find SourceMod’s .inc files.
| |
− |
| |
− | [[Image:Step26.jpg]]
| |
− |
| |
− | Note: You will have to restart Visual Studio for the highlighting to take effect.
| |
− |
| |
− |
| |
− | ==Enable #include <file> Navigation==
| |
− | Visual Studio will try to open any included file if you right click the file name and choose “Open Document <file name>”.
| |
− |
| |
− | [[Image:Step27.jpg]]
| |
− |
| |
− | However, Visual Studio doesn’t know where to look for SourceMod’s .inc files. So, let’s tell Visual Studio where to find them. Select Projects and
| |
− |
| |
− | Solutions->VC++ Directories and then select “Include files” from the “Show directories for:” combo. Press the ‘folder’ button and enter the path.
| |
− |
| |
− | [[Image:Step28.jpg]]
| |
− |
| |
− | Note: Visual Studio will not navigate to an include file without the file extension. ex. #include <sourcemod> cannot be found.
| |
− |
| |
− | This is because we are piggy backing on a Visual Studio C++ Project and Visual Studio only knows how to open .h and .hpp files.
| |
− |
| |
− |
| |
− | Visual Studio will open the include file if you include the file extension: ex. #include <file.sp> or #include <sourcemod.inc>.
| |
− |
| |
− |
| |
− | ==SourcePawn Custom Build Project Settings==
| |
− | Reopen the project’s properties and check out the new “SourcePawn” options. The “Input File” and “Output File”, default to the project’s name. This means that I would have
| |
− |
| |
− | to have a MyPlugin.sp file in the project’s directory and the build would produce a MyPlugin.smx file in the location defined Configuration Properties->General: Output Directory.
| |
− |
| |
− | [[Image:Step29.jpg]]
| |
− |
| |
− | Happy Coding, Daedilus…
| |