Creating Binary Modules: Premake

İkili modüller, C++ kullanarak Lua'nın işlevselliğini genişletmenize olanak tanır.

Bu sayfa, Premake kullanarak ikili modülleri derlemek için IDE'nizi nasıl kuracağınızı öğretecektir.

Kurulum tamamlandıktan sonra C Lua API ile etkileşim konusunda yardım için C Lua: Fonksiyonlar sayfasına bakın.

Bağımlılıklar

Proje Kurulumu

  • Yeni bir klasör oluşturun ve istediğiniz gibi adlandırın. Bu, projenizin ana klasörü olacaktır. Gelecekte erişebileceğiniz bir yere koyun.

  • Yeni proje klasörüne gidin ve git clone https://github.com/danielga/garrysmod_common.git yazın. Ardından projede bir garrysmod_common klasörü görmelisiniz.

  • garrysmod_common klasörüne gidin, ardından git submodule update --init --recursive yazın. Bu işlem tamamlandıktan sonra tekrar proje klasörüne gidin.

  • Premake5 ikili dosyalarını proje klasörüne bırakın.

  • premake5.lua adında bir dosya oluşturun ve aşağıdakini içine yapıştırın:

    • Eğer sadece sunucu tarafı ikili dosyaları oluşturmak istiyorsanız, serverside = false yazan bölümü silebilirsiniz.
    • CreateWorkspace({name = "example" kısmındaki adı kendi proje adınızla değiştirin, örn. name = "myprojectname"
PROJECT_GENERATOR_VERSION = 2 newoption({ trigger = "gmcommon", description = "Sets the path to the garrysmod_common (https://github.com/danielga/garrysmod_common) directory", value = "../garrysmod_common" }) local gmcommon = assert(_OPTIONS.gmcommon or os.getenv("GARRYSMOD_COMMON"), "you didn't provide a path to your garrysmod_common (https://github.com/danielga/garrysmod_common) directory") include(gmcommon) CreateWorkspace({name = "example", abi_compatible = false, path = "projects/" .. os.target() .. "/" .. _ACTION}) CreateProject({serverside = true, source_path = "source", manual_files = false}) IncludeLuaShared() IncludeScanning() IncludeDetouring() IncludeSDKCommon() IncludeSDKTier0() IncludeSDKTier1() CreateProject({serverside = false, source_path = "source", manual_files = true}) IncludeLuaShared() IncludeScanning() IncludeDetouring() IncludeSDKCommon() IncludeSDKTier0() IncludeSDKTier1() filter("system:windows") files({"source/win32/*.cpp", "source/win32/*.hpp"}) filter("system:linux or macosx") files({"source/posix/*.cpp", "source/posix/*.hpp"})

Proje klasörünüz şöyle görünmelidir:

explorer_ASnJkJMn31.png

Sisteminizin komut isteminde, proje klasörüne gidin ve aşağıdakileri çalıştırın:

  • Windows: premake5.exe --os=windows --gmcommon=./garrysmod_common vs2022 (vs2022'yi kendi Visual Studio sürümünüzle değiştirin, örn. vs2019)
  • Linux: ./premake5 --os=linux --gmcommon=./garrysmod_common gmake2
  • macOS: ./premake5 --os=macosx --gmcommon=./garrysmod_common xcode4

Bu, bir projects klasörü oluşturacaktır; bu klasöre gitmeli ve çalışmaya başlamalısınız. Eğer Visual Studio kullanıyorsanız, çözüm dosyanız (solution file) burada olacaktır.

Adlandırma ve Konum

Modül dosyaları garrysmod/lua/bin/ klasörüne yerleştirilmelidir.

İsimler, platforma ve Lua alanına (realm) göre farklılık gösterir.

Dosya adı Taraf require(ad) Platform
gmsv_example_win32.dll Sunucu example Windows x32
gmcl_example_win32.dll İstemci example Windows x32
gmsv_example_win64.dll Sunucu example Windows x64 (x86-64 branch'ı gereklidir)
gmcl_example_win64.dll İstemci example Windows x64 (x86-64 branch'ı gereklidir)
gmsv_example_osx.dll Sunucu example OSX (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır)
gmcl_example_osx.dll İstemci example OSX (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır)
gmsv_example_linux.dll Sunucu example Linux x32 (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır)
gmcl_example_linux.dll İstemci example Linux x32 (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır)
gmsv_example_linux64.dll Sunucu example Linux x64 (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır; x86-64 branch'ı gereklidir)
gmcl_example_linux64.dll İstemci example Linux x64 (aslında bir .so dosyasıdır, sadece yeniden adlandırılmıştır; x86-64 branch'ı gereklidir)
Menü durumu modülleri gmsv_ad_platform.dll altında kategorize edilir

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord