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

Проблема с компиляцией,

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

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


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

Проблема с компиляцией,

Сообщение __VCL » 25 дек 2014, 19:06

Компилирую на g++-4.9 (Ubuntu)
hlsdk-master/dlls/const.h:649:24: fatal error: in_buttons.h: Нет такого файла или каталога
#include "in_buttons.h"
Файл in_buttons.h присутствует.

Использую такой makefile, уже долго не могу понять что не так=)

Код: Выделить всё
# (C)2004-2013 AMX Mod X Development Team
# Makefile written by David "BAILOPAN" Anderson

###########################################
### EDIT THESE PATHS FOR YOUR OWN SETUP ###
###########################################

HLSDK   = sdk/hlsdk_master
MM_ROOT = sdk/metamod_hl1_master/metamod

#####################################
### EDIT BELOW FOR OTHER PROJECTS ###
#####################################

PROJECT = gtf

OBJECTS = sdk/amxxmodule.cpp main.cpp

##############################################
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
##############################################

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

LINK =

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

################################################
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
################################################

OS := $(shell uname -s)

ifeq "$(OS)" "Darwin"
   CPP = $(CPP_OSX)
   LIB_EXT = dylib
   LIB_SUFFIX = _mm
   CFLAGS += -DOSX
   LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5
else
   LIB_EXT = so
   LIB_SUFFIX = _mm_i386
   CFLAGS += -DLINUX
   LINK += -shared
endif

LINK += -m32 -lm -ldl

CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32 -DHAVE_STDINT_H -fno-strict-aliasing -m32 -Wall
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

IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0")

ifeq "$(IS_CLANG)" "1"
   CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/")
   CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/")
else
   CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1)
   CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3)
endif

# Clang || GCC >= 4
ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1"
   CFLAGS += $(C_GCC4_FLAGS)
   CPPFLAGS += $(CPP_GCC4_FLAGS)
endif

# Clang >= 3 || GCC >= 4.7
ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1"
   CFLAGS += -Wno-delete-non-virtual-dtor
endif

# OS is Linux and not using clang
ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1"
   LINK += -static-libgcc
endif

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

# This will break if we include other Makefiles, but is fine for now. It allows
#  us to make a copy of this file that uses altered paths (ie. Makefile.mine)
#  or other changes without mucking up the original.
MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))

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

all:
   mkdir -p $(BIN_DIR)
   mkdir -p $(BIN_DIR)/sdk
   $(MAKE) -f $(MAKEFILE_NAME) $(PROJECT)

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

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

default: all

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



Добавлено спустя 43 минуты 6 секунд:
Аналогичный код с тем и же include файлами только для Win32 компилируется нормально.
Аватара пользователя
__VCL
 
Сообщения: 13
Зарегистрирован: 19 июн 2014, 09:44
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6
Windows 98 и новее

Re: Проблема с компиляцией,

Сообщение 6a6kin » 26 дек 2014, 00:36

Приложи hlsdk свой сюда, посмотрим. А ещё лучше - проект, если он не секретный.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Re: Проблема с компиляцией,

Сообщение __VCL » 26 дек 2014, 11:45

Вы должны зарегистрироваться, чтобы видеть ссылки.

Проект секретный 8-)

Добавлено спустя 1 час 54 минуты 9 секунд:
Перепробовал кучи вариантов hlsdk и заменил в конце концов hlsdk на этот.
Вы должны зарегистрироваться, чтобы видеть ссылки.
Поставил вот такой Makefile. Теперь единственная проблема в том что #pragma warning(disable : КОД_ОШИБКИ) почему-то не понимает компилятор и из-за этого не получается скомпилировать, аналогичный код в Visual Sutdio C++ компилируется на ура.
Код: Выделить всё
#(C)2004-2005 AMX Mod X Development Team
# Makefile written by David "BAILOPAN" Anderson

HLSDK = sdk/hlsdk/multiplayer
MM_ROOT = sdk/metamod-hl1-master/metamod

### EDIT BELOW FOR OTHER PROJECTS ###

OPT_FLAGS = -O2 -funroll-loops -s -pipe -fomit-frame-pointer -fno-strict-aliasing
DEBUG_FLAGS = -g -ggdb3
CPP = g++
NAME = gtf

BIN_SUFFIX_32 = amxx_i386.so
BIN_SUFFIX_64 = amxx_amd64.so

OBJECTS = sdk/amxxmodule.cpp main.cpp

LINK =

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

GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)

ifeq "$(GCC_VERSION)" "4"
        OPT_FLAGS += -fvisibility=hidden -fvisibility-inlines-hidden
endif

ifeq "$(DEBUG)" "true"
   BIN_DIR = Debug
   CFLAGS = $(DEBUG_FLAGS)
else
   BIN_DIR = Release
   CFLAGS = $(OPT_FLAGS)
endif

CFLAGS += -DNDEBUG -Wall -Wno-non-virtual-dtor  -Wno-deprecated -Wno-write-strings -Wunknown-pragmas -fno-exceptions -DHAVE_STDINT_H -fno-rtti -static-libgcc -m32

ifeq "$(AMD64)" "true"
   BINARY = $(NAME)_$(BIN_SUFFIX_64)
   CFLAGS += -DPAWN_CELL_SIZE=64 -DHAVE_I64 -m64
else
   BINARY = $(NAME)_$(BIN_SUFFIX_32)
   CFLAGS += -DPAWN_CELL_SIZE=32 -DJIT -DASM32
   OPT_FLAGS += -march=i586
endif

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

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

all:
   mkdir -p $(BIN_DIR)
   mkdir -p $(BIN_DIR)/sdk
   $(MAKE) fun

amd64:
   $(MAKE) all AMD64=true

fun: $(OBJ_LINUX)
   $(CPP) $(INCLUDE) $(CFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)

debug:   
   $(MAKE) all DEBUG=true

default: all

clean:
   rm -rf Release/sdk/*.o
   rm -rf Release/*.o
   rm -rf Release/$(NAME)_$(BIN_SUFFIX_32)
   rm -rf Release/$(NAME)_$(BIN_SUFFIX_64)
   rm -rf Debug/sdk/*.o
   rm -rf Debug/*.o
   rm -rf Debug/$(NAME)_$(BIN_SUFFIX_32)


Добавлено спустя 3 минуты 20 секунд:
Прошу помочь опытные =)
Аватара пользователя
__VCL
 
Сообщения: 13
Зарегистрирован: 19 июн 2014, 09:44
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6
Windows 98 и новее

Re: Проблема с компиляцией,

Сообщение 6a6kin » 26 дек 2014, 12:49

Плохой в итоге sdk ты взял, старый. Лучше уже p4 бери:
Вы должны зарегистрироваться, чтобы видеть ссылки.

А в твоём первоначальном sdk почему-то файл in_buttons присутствует сразу в папке dlls и common. Думаю, что в этом и проблема была. Из dlls его нужно удалить.

Теперь единственная проблема в том что #pragma warning(disable : КОД_ОШИБКИ) почему-то не понимает компилятор и из-за этого не получается скомпилировать, аналогичный код в Visual Sutdio C++ компилируется на ура.

Дело в том, что эта директива существует исключительно в Visual Studio, а gcc такую не понимает. Тут всё зависит от того, в каких файлах она у тебя вылезла.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Re: Проблема с компиляцией,

Сообщение __VCL » 26 дек 2014, 15:05

Под linux в первые просто делаю и не освоился ещё. Нет ли аналогии #pragma warning(disable : КОД_ОШИБКИ) для gcc?
Аватара пользователя
__VCL
 
Сообщения: 13
Зарегистрирован: 19 июн 2014, 09:44
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6
Windows 98 и новее

Re: Проблема с компиляцией,

Сообщение 6a6kin » 26 дек 2014, 15:21

Можно просто удалить эту строку. Она выключает не ошибки, а предупреждения, которые не влияют на компиляцию (кроме случая, когд компилятору указано обратное).
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.


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

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

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