应用场景(一)

当我在使用visual studio开发模块时,总觉得太过于笨重,而且一些快捷键也没有vscode来得好使,而且在平时我开发module时,基本不会使用visual studio来编译module代码,而是使用ambuild来编译module代码。所以,这里我就想,要是我用vscode来开发module时,是否也有类似visual studio这种代码智能提示的功能?

其实,在vscode中也是可是满足我对C/C++开发的需求的。

安装配置

通用工具插件安装

  1. 首先,我们还是需要安装visual studio的,因为我们需要使用它的编译工具和编译环境,无论是vscode还是ambuild,其最终还是需要调用visual studio里边的东西的。
  2. 安装vscode,并且安装C/C++、C/C++ Extension Pack等插件。
  3. 配置C/C++插件,

Module开发环境配置

  1. 配置环境变量,添加HLSDK和METAMOD环境变量,并指向它们的安装目录,可参考amxx模块开发入门003-使用AMBuild工具编译模块(Windows)
  2. 配置vscode的C/C++插件,按Ctrl+Shift+P打开命令调面板,并输入C/C++,并点击编辑配置(UI),然后找到“包含路径”,添加以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ${workspaceFolder}/**
    ..\
    ..\..\public
    ..\..\public\sdk
    ..\..\public\amtl
    ..\..\third_party
    ..\..\third_party\hashing
    ${env.METAMOD}\metamod
    ${env.HLSDK}\common
    ${env.HLSDK}\engine
    ${env.HLSDK}\dlls
    ${env.HLSDK}\pm_shared
    ${env.HLSDK}\public
  3. 更多配置如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    // .vscode/c_cpp_properties.json
    {
    "configurations": [
    {
    "name": "Win32",
    "includePath": [
    "${workspaceFolder}/**",
    "..\\",
    "..\\..\\public",
    "..\\..\\public\\sdk",
    "..\\..\\public\\amtl",
    "..\\..\\third_party",
    "..\\..\\third_party\\hashing",
    "${env.METAMOD}\\metamod",
    "${env.HLSDK}\\common",
    "${env.HLSDK}\\engine",
    "${env.HLSDK}\\dlls",
    "${env.HLSDK}\\pm_shared",
    "${env.HLSDK}\\public"
    ],
    "defines": [
    "_DEBUG",
    "UNICODE",
    "_UNICODE"
    ],
    "windowsSdkVersion": "10.0.17763.0",
    "compilerPath": "cl.exe",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "windows-msvc-x64"
    }
    ],
    "version": 4
    }

应用场景(二)

在开发module的时候,通常也是要开发plugin的,也就是small脚本,对于来回切换开发工具来说,是比较麻烦的事情,所以这里我也想让vscode也作为主要的small代码编写工具。

安装AMXXPawn插件

插件名称:AMXXPawn
插件作者:KliPPy

非常感谢KliPPy开发了这个插件,提供了代码自动提醒,还有可以直接调用编译器的功能。

配置AMXXPawn

首先,我们现在D盘下创建一个名为AmxxCompiler的文件夹。

然后,把以下的内容都放到这个文件夹下

1
2
3
4
D:\AmxxCompiler\include          包含有sma的include目录
D:\AmxxCompiler\amxxpc.exe 编译器
D:\AmxxCompiler\amxxpc32.dll 编译器组件
D:\AmxxCompiler\compile.exe 编译器辅助工具

这些工具在你使用ambuild编译amxmodx完成后,可以在下边的目录可以找到:

include目录,在D:\sdk\amxmodx\plugins
amxxpc.exe文件,在D:\sdk\amxmodx\build\compiler\amxxpc\amxxpc
amxxpc32.dll文件,在D:\sdk\amxmodx\build\compiler\libpc300\amxxpc32
compile.exe文件,在D:\sdk\amxmodx\compiler\compile

接着,我们打开AMXXPawn Language插件配置:

你可以设置“用户”、也可以设置“工作区”,区别就是“用户”是全局的,“工作区”只对当前工作目录有效。

我这里设置“用户”,也就是全局的,每个工作区对sma脚本的配置都是一样的。

  • Executable Path,填上我们的amxxpc.exe文件的路径;
  • Include Path,填上"${workspaceFolder}/**",并且填上我们include文件夹的路径;
  • Output Path,填上我们想要输出*.amxx文件的路径;
  • Output Path Type,选择path,否则Output Path填写的路径不会生效。

最终配置如下:

1
2
3
4
5
6
7
8
9
{
"amxxpawn.compiler.executablePath": "D:\\AmxxCompiler\\amxxpc.exe",
"amxxpawn.compiler.includePaths": [
"${workspaceFolder}/**",
"D:\\AmxxCompiler\\include"
],
"amxxpawn.compiler.outputPath": "D:\\AmxxCompiler\\compiled",
"amxxpawn.compiler.outputType": "path",
}

使用AMXXPawn插件

代码自动提醒

只要include和amxxpc.exe设置正确后,我们在编写代码的时候就会自动提醒代码了

代码快速编译

我们可以按Ctrl+Shift+P快捷键调出命令输入框,然后输入AMXXPawn,选择AMXXPawn: Compile Plugin即可对当前sma脚本进行编译。编译完成后,将会在我们设置的OutputPath中生成*.amxx文件。

除此之外,我们也可以点击菜单栏上的“帮助”->“显示所有命令”来调出命令输入框。

又或者,我们还可以在命令输入框的右边,点击“小齿轮”按钮来设置快捷键,直接调用AMXXPawn: Compile Plugin命令。

参考文献

VsCode 配置window编译器cl.exe编译器
VSCode配置C/C++环境 - 知乎
Vscode配置C/C++环境 - CSDN

AMXXPawn插件 - alliedmods