Русское сообщество по скриптингу

Makefile amxx модуля для Windows

Все вопросы по скриптингу для Metamod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для
Metamod.


Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.

Makefile amxx модуля для Windows

Сообщение Valer4 » 21 дек 2018, 11:18

Привет всем. Модуль компилируется, но не работает.
Взял makefile от fakemeta, что-то в нём изменил, на Ubuntu скомпилировал и модуль работает.
После удалил с него команды, которые windows не понимает и ветвления по типу ОС
Если скомпилировать в Visual Studio тоже работает.
Гляньте, что не так с этим мэйкфайлом.
Код: Выделить всё
HLSDK = ../hlsdk
MM_ROOT 
= ../metamod/metamod

PROJECT 
= namemodule
OBJECTS 
= sdk/amxxmodule.cpp namemodule.cpp

C_OPT_FLAGS 
= -DNDEBUG -O3 -funroll-loops -fomit-frame-pointer -pipe
C_DEBUG_FLAGS 
= -D_DEBUG -DDEBUG --ggdb3
C_GCC4_FLAGS 
= -fvisibility=hidden
CPP_GCC4_FLAGS 
= -fvisibility-inlines-hidden
CPP 
= gcc

LINK 
= -shared

INCLUDE 
= -I. -I$(HLSDK) -I$(HLSDK)/common -I$(HLSDK)/dlls -I$(HLSDK)/engine -I$(HLSDK)/game_shared \
          -I$(HLSDK)/pm_shared -I$(HLSDK)/public -I$(MM_ROOT) -Isdk

LIB_EXT 
= dll
LIB_SUFFIX 
= _amxx

LINK 
+= -m32 -lm

CFLAGS 
+= -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall \
          -Wno-invalid-offsetof
CPPFLAGS 
+= -fno-exceptions -fno-rtti

BINARY 
= $(PROJECT)$(LIB_SUFFIX).$(LIB_EXT)

ifeq "$(DEBUG)" "true"
    BIN_DIR = Debug
    CFLAGS 
+= $(C_DEBUG_FLAGS)
else
    BIN_DIR = Release
    CFLAGS 
+= $(C_OPT_FLAGS)
    LINK += -s
endif

CFLAGS += $(C_GCC4_FLAGS)
CPPFLAGS += $(CPP_GCC4_FLAGS)
CPPFLAGS += -Wno-delete-non-virtual-dtor
LINK 
+= -static-libgcc

OBJ_BIN 
:= $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)

MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))

$(
BIN_DIR)/%.o: %.cpp
    
$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -$@ -$<

all:
    if not exist $(BIN_DIR)\sdk mkdir $(BIN_DIR)\sdk
    
$(MAKE) -$(MAKEFILE_NAME) $(PROJECT)

$(
PROJECT): $(OBJ_BIN)
    $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -$(BIN_DIR)/$(BINARY)

debug:
    $(MAKE) -$(MAKEFILE_NAME) all DEBUG=true

default: all

clean
:
    rm -rf $(BIN_DIR)/*.o
    rm -rf $(BIN_DIR)/sdk/*.o
    rm -f $(BIN_DIR)/$(BINARY)

Поначалу компилятор ругался на типы, в каждый .cpp добавил:
Код: Выделить всё
#include <sys/types.h>

typedef long int32;

typedef unsigned long uint32;
typedef unsigned long long uint64

make от Code::Blocks - mingw32-make.exe.
PATH = C:\Program Files\CodeBlocks\MinGW\bin

В meta list badf load.
В amxx modules pending.
Аватара пользователя
Valer4
 
Сообщения: 52
Зарегистрирован: 07 окт 2010, 14:12
Откуда: Байконур
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.

Re: Makefile amxx модуля для Windows

Сообщение Valer4 » 24 дек 2018, 13:37

В общем с GCC ничего не вышло.
Насколько понял команда AMX Mod X использует свою версию HLSDK, которая с MinGW не дружит.

Можно использовать Code::Blocks с Microsoft Visual C++ Toolkit 2003.
Необходимо прочесть 2 статьи:
Вы должны зарегистрироваться, чтобы видеть ссылки.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Code::Blocks, в данном случае можно выбрать - codeblocks-17.12-setup.exe, но можно и с компиляторами - codeblocks-17.12mingw-setup.exe - Вы должны зарегистрироваться, чтобы видеть ссылки.
Microsoft Visual C++ Toolkit 2003 качал отсюда - Вы должны зарегистрироваться, чтобы видеть ссылки.

Ещё бы разобраться как сделать Makefile для этого случая.
Аватара пользователя
Valer4
 
Сообщения: 52
Зарегистрирован: 07 окт 2010, 14:12
Откуда: Байконур
Благодарил (а): 5 раз.
Поблагодарили: 5 раз.


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6