0

我正在使用 Notepad++ 编写我的 SA:MP 服务器系统,但我在尝试组织我的文件夹时遇到问题:我想将我的编译文件(.amx - 就像非 Pawn 开发人员生成的 .exe)放在一个单独的名为 的文件夹bin,其子文件夹结构与源文件夹 ( src) 相同。

为了澄清,所需的文件夹结构是这样的:

Root folder
├── src
│   ├── filterscripts
│   │   ├── file1.pwn
│   │   └── file2.pwn
│   └── gamemodes
│       └── gm_main.pwn
├── bin
│   ├── filterscripts
│   │   ├── file1.amx
│   │   └── file2.amx
│   └── gamemodes
│       └── gm_main.amx

我想要的是当我编译一个 .pwn 文件时,生成的 .amx 应该转到等效的原始子文件夹,但在bin.

我当前的执行脚本是这样的:

NPP_SAVE
cd $(CURRENT_DIRECTORY)
"C:\Pawn\bin\samp\pawncc.exe" "$(FILE_NAME)" -; -(

是否可以仅使用 NppExec 执行此操作?

4

1 回答 1

0

您可以使用此 NppExec 脚本来派生所需的路径并将它们提供给编译器的一些参数:

NPP_SAVE
echo Sourcefile         : $(FULL_CURRENT_PATH)

// ---------------------------------------------------------------------------------
// -- use string function to get ROOT and SRC path and then BIN path:

//  set <var> ~ strrfind <s> <t> - returns the LAST position of <t> in <s>
set Pos_Root ~ strrfind $(FULL_CURRENT_PATH) \src\
//  set <var> ~ <math expression> - calculates the math expression
set Pos_Src ~ $(Pos_Root) + 4
// echo $(Pos_Src), $(Pos_Root)

//   returns the substring
set Dir_Root ~ substr 0 $(Pos_Root) $(FULL_CURRENT_PATH)
set Dir_Src ~ substr 0 $(Pos_Src) $(FULL_CURRENT_PATH)
echo Src-Directory      : $(Dir_Src)
echo Project-Directory  : $(Dir_Root)

set Dir_Bin = $(Dir_Root)\bin
echo Bin-Directory      : $(Dir_bin)

// -- Now use the previously determined substring to get the BIN path and then
// -- derive the Target path with src replace by bin 

// get the target dir:
// set <var> ~ strreplace <s> <t0> <t1> - replaces all <t0> with <t1>
set TARGET_PATH ~ strreplace $(CURRENT_DIRECTORY) $(Dir_Src) $(Dir_Bin)
echo Target-Directory   : $(TARGET_PATH)

// ----------------------------------

// use compile with $(FULL_CURRENT_PATH) and $(TARGET_PATH)
"C:\Pawn\bin\samp\pawncc.exe" $(FULL_CURRENT_PATH) whatever-output-option $(TARGET_PATH)

笔记

  • NppExec 文档解释了所有不同的set可能性,查看它们
  • 动态派生路径的替代方法是路径的静态定义:
    • 将“PATH 设置”作为 NppExec 脚本中的 ROOT、BIN、SRC 等的静态路径
    • 将路径定义为您从 NppExec 脚本访问的环境变量
    • 一种完全不同的方法是存储几个$(FULL_CURRENT_PATH)并在以下之间进行一些更改目录:
      1. 一个 cd .. 从 src 子目录跳转到 src
      2. 根,
      3. 装箱
      4. 然后进行字符串替换
于 2017-01-21T13:51:51.820 回答