Локальное компилирование плагинов

Сообщения
18
Реакции
28
Помог
2 раз(а)
Работающий конфиг билд системы для Sublime Text под линукс
Установка:
1. Заходим в меню Tools -> Builds System -> New Builds System
2. Вставляем конфиг ниже и сохраняем с именем Amxx.sublime-build (/path/to/hlds нужно заменить не свой)
3. Для компиляции жмем Ctrl+B
4. Проверяем файл

JavaScript:
{
"cmd": ["/path/to/hlds/cstrike/addons/amxmodx/scripting/amxxpc", "$file", "-o/path/to/hlds/cstrike/addons/amxmodx/plugins//$file_base_name"],
"file_regex": "(.*?)[(]([0-9]*)[)]",
"selector": "source.sma",
"working_dir": "/path/to/hlds/cstrike/addons/amxmodx/scripting/",
}
Хмм...
Я пользуюсь немного похожим конфигом, работает не только на линукс системах, в принципе на любой:
JSON:
{
    "working_dir": "/Users/weazzylee/Code/scripting/",
    "shell_cmd": "./amxxpc $file -o$file_path/$file_base_name.amxx",
    "selector": "source.sma",
    "file_regex": "(.*?)[(]([0-9]*)[)]",
    "file_patterns": ["*.sma"]
}
Не забываем менять /Users/weazzylee/Code/scripting/ на свой путь до папки scripting.
Для работы на Windows в shell_cmd заменить:
Diff:
-./amxxpc
+.\amxxpc.exe

Да и еще, можно дополнить что compile.sh под мак путает директории и не компилирует. До того как начал пользоваться Sublime Build, написал себе его замену на bash. Приложил инструкцию, может кому пригодится.
Проверял работу на Ubuntu и OSX, работает как нужно.
Bash:
#!/bin/bash

# Executable script for compile
#
# by WeazzyLee
#

# How to use:

# Place this script in directory with amxxpc or amxxpc_osx file.
# By default it is "amxmodx/scripting" folder.

# Make this and amxxpc file executable by command in terminal:
# cd /path to file/amxmodx/scripting/ && chmod a+x amxxpc compile

# Run the file by double click simply like app. (For OSX)
# Run the file from terminal in directory of file location, by command: (Linux)
# ./compile
# From this moment you have several way to compile:

# 1. Drag and drop one or more files in opened window.
# You can drag and drop each one files from different folders.

# 2. Enter in opened window one or more full files name with extension,
# in that directory, separated by space.
# For example: admin.sma adminchat.sma

# 3. You can combine methods 1 and 2.

# 4. You can to type nothing or don't drag anything, just press Enter
# to compile all files with .sma extension in that directory.

DIR=$(dirname "$0")
cd $DIR
if [[ -f "$DIR/amxxpc_osx" || -f "$DIR/amxxpc" ]]
then
    if [[ -f "$DIR/amxxpc_osx" ]]
    then
        pc=amxxpc_osx
    else
        pc=amxxpc
    fi
    test -e $DIR/compiled || mkdir $DIR/compiled
    rm -f $DIR/CompileLog.txt
    echo "What plugins will be compiled?"
    echo "Enter one plugin name or list with space to compile, for example: admin.sma admincha.sma"$'\n'"Or press Enter, to compile all plugins in directory."$'\n'"You can also simply drag and drop one or more files here."
    IFS="" read -r input
    eval "files=( $input )"
    if [[ "${files[@]}" == "" ]]
    then
        LIST="$DIR/*.sma"
    else
        LIST="${files[@]}"
    fi
    for file in $LIST
    do
        if [[ -f "${file}" ]]
        then
            if [[ "${file##*.}" == "sma" ]]
            then
                smafile="`echo ${file##*/}`"
                amxxfile="`echo $smafile | sed -e 's/\.sma$/.amxx/'`"
                echo "Compiling $smafile... To /compiled/$amxxfile" >> $DIR/CompileLog.txt
                echo "Compiling $smafile... To /compiled/$amxxfile"
                compileoutput=$($DIR/$pc $file -o$DIR/compiled/$amxxfile -i$DIR/include)
                echo "$compileoutput"$'\n' >> $DIR/CompileLog.txt
                echo "$compileoutput"$'\n'
            else
                echo "$file : error:  passed file is invalid."$'\n' >> $DIR/CompileLog.txt
                echo "$file : error:  passed file is invalid."$'\n'
            fi
        else
            echo "$file : error:  passed file is not exist."$'\n' >> $DIR/CompileLog.txt
            echo "$file : error:  passed file is not exist."$'\n'
        fi
    done
    echo $'\n'"Compilation log in /CompileLog.txt"
    read -p "Press Enter to close" </dev/tty
else
    echo "No amxxpc or amxxpc_osx file found in this folder:"
    echo "$DIR"
    echo "Please, place this script in directory with amxxpc or amxxpc_osx file."
    echo "By default it is \"amxmodx/scripting\" folder."
    read -p "Press Enter to close" </dev/tty
fi
Сохранить код скрипта с названием "compile" без расширения.
Поместите этот скрипт в каталог с файлом amxxpc.
По умолчанию это папка "amxmodx/scripting".

Сделайте этот файл и файл amxxpc исполняемым командой в терминале:
cd /путь к папке/amxmodx/scripting/ && chmod a+x amxxpc compile

Запустите файл двойным щелчком мыши просто как приложение. (для OSX)
Запустите файл через терминал, выполнив команду из каталога где лежит файл. (для Linux)
./compile
С этого момента у вас есть несколько способов компиляции:

1. Перетащите один или несколько файлов в открывшиеся окно/окно терминала.
Вы можете перетаскивать файлы из разных папок.

2. Введите в открывшемся окне одно или несколько полных имен файлов с расширением,
из папки, разделенном пробелом.
Например: admin.sma adminchat.sma

3. Можно комбинировать методы 1 и 2.

4. Вы можете ничего не вводить или ничего не перетаскивать, просто нажмите Enter в открывшемся окне/окне терминала
для компиляции всех файлов с расширением .sma в этом каталоге.
 
Сообщения
2,491
Реакции
2,791
Помог
61 раз(а)
Немного распишу про аргументы компилятора
АргументЗначение
-d0Никакой дебаг информации и проверок во время исполнения.
-d1По умолчанию. Никакой дебаг информации, но есть проверка во время исполнения.
-d2Полная дебаг информация и проверки во время исполнения
-d3Как и -d2 но без оптимизаций.
-iПУТЬПуть к поиску инклудов. Можно указывать несколько раз.
-oПУТЬПуть к файлу скомпилированного плагина.
-wНОМЕРОтключение предупреждений по их номеру
-EСчитать предупреждения как ошибки
-\\Символ экранирования будет \\ вместо ^
-^Символ экранирования будет ^
-cНАЗВАНИЯУстанавливает кодировку файла по названию или номеру
НАЗВАНИЕ=ЗНАЧЕНИЕВыставляет #define с именем и значением для плагина. Для указания просто названия укажите НАЗВАНИЕ=
 
Сообщения
20
Реакции
2
Моя работающая версия конфига билда системы для Sublime Text под Windows 10. Мб кому-нибудь пригодиться.
Установка:
1. Заходим в меню Tools -> Builds System -> New Builds System...
2. Вставляем конфиг ниже и сохраняем с удобным для вас именем ИМЯ.sublime-build (Например: Amxmodx.sublime-build) (ВАШ ПОЛНЫЙ ПУТЬ/ нужно заменить на свой(Копируется из проводника))
3. Заходим в меню Tools -> Builds System -> Выбираем наш билд
4. Открывает файл .sma с помощью sublime text, и нажимаем Ctrl+B для компиляции.
5. Радуемся, что sma скомпилировался прямо в папку plugins.
{
"working_dir": "ВАШ ПОЛНЫЙ ПУТЬ/cstrike/addons/amxmodx/scripting/",
"cmd": ["ВАШ ПОЛНЫЙ ПУТЬ/cstrike/addons/amxmodx/scripting/amxxpc.exe", "$file", "-oВАШ ПОЛНЫЙ ПУТЬ/cstrike/addons/amxmodx/plugins/$file_base_name"],
"selector": "source.sma",
"file_regex": "(.?)[(]([0-9])[)]",
"file_patterns": ["*.sma"]
}
 
  • Нравится
Реакции: ssx

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу