Creating Binary Modules: CMake

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

Bu sayfa size CMake kullanarak binary 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.

Birçok popüler kütüphane CMake yerine premake kullanır, bu nedenle bunun yerine Binary Modüller Oluşturma: Premake sayfasını kullanmanız önerilir.

Bağımlılıklar

Binary Modüllerin oluşturulması için yalnızca CMake ve bir C++ derleyicisi gerekir.

Her ikisini de Windows'ta Visual Studio Installer (Visual Studio 2019'da "Desktop development with C++") aracılığıyla, macOS'ta Xcode/homebrew ile veya Linux'ta favori paket yöneticinizi kullanarak kurabilirsiniz. CMake için indirmeler CMake web sitesinde de mevcuttur.

Bir IDE kullanmak istiyorsanız, CMake projelerini desteklediği sürece herhangi birini (Visual Studio, CLion, vb.) seçebilirsiniz.

Bir IDE kullanmak istemiyorsanız, modülü manuel olarak da oluşturabilirsiniz, ancak bu yaklaşım bu kılavuzda ayrıntılı olarak anlatılmayacaktır.

Proje kurulumu

İhtiyacınız olan başlık dosyaları (header) burada mevcuttur. Bu dosyalar, projenize oyunla nasıl arayüz oluşturulacağı hakkında bilgi sağlayacak ve modülü derlemek için bazı genel ayarları belirleyecektir.

İlk olarak, boş bir klasör oluşturun. Bu klasör, modülünüzle ilgili tüm dosyaları içerecek ve bundan sonra "ana klasör" olarak anılacaktır.

Şimdi, başlık dosyalarının bir kopyasını indirin ve ana klasörün bir alt klasörüne yerleştirin. Bu alt klasörü istediğiniz gibi adlandırabilirsiniz, ancak bu kılavuzda alt klasör adı olarak gmod-headers kullanılacaktır. Farklı bir isim seçtiyseniz, bu ismi kendi seçtiğinizle değiştirmeniz gerekecektir. Dosyaları doğru konuma çıkardığınızı kontrol etmek için, ana klasörde gmod-headers/include ve gmod-headers/examples yollarının bulunduğundan emin olun.

Sırada, bir CMake proje tanımı ayarlayacağız. Bunu yapmak için, ana klasörde CMakeLists.txt adında bir dosya oluşturun ve aşağıdaki içeriği içine yapıştırın:

cmake_minimum_required(VERSION 3.10) # Proje adı pek önemli değildir ve istediğiniz herhangi bir şeyi adlandırabilirsiniz. # Sadece aşağıda tanımlanan modül adıyla çakışmamalıdır. project(gmod-module-guide LANGUAGES CXX) set(CMAKE_CONFIGURATION_TYPES Release Debug) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Başlık dosyalarını ve ayarları düzenleyen gmod-module-base projesini yükleyin. add_subdirectory(gmod-headers/include) # Burada tanımlanan kütüphane adı (bu durumda, "testmodule") modülün adı olacaktır. add_library(testmodule SHARED) # Modül için gerekli kaynak dosyalarını ekleyin. # Yine, dosya adları önemli değildir ve "module.cpp"den sonra boşlukla ayrılmış daha fazla dosya adı ekleyerek birden fazla dosya ekleyebilirsiniz. target_sources(testmodule PRIVATE module.cpp) # Başlık dosyalarını ve ayarları modülümüze uygulayın. target_link_libraries(testmodule gmod-module-base) set_gmod_suffix_prefix(testmodule)

Projemizi tanımladığımıza göre, şimdi bir modüle derleyebileceğimiz bir şeye ihtiyacımız var.

Gösterim amacıyla "Hello World" örneği gayet iyi iş görür, bu yüzden gmod-headers/examples/HelloWorld/HelloWorld.cpp dosyasını kopyalayın ve ana klasöre module.cpp olarak yapıştırın. Artık bu dosyayı değiştirebilir ve üzerinde denemeler yapabilirsiniz.

Derlemek için, ana klasörü seçtiğiniz IDE'de açın (yarı-düzgün herhangi bir IDE, CMakeLists.txt dosyasını algılayıp bir CMake projesi kurmalıdır) ve oradaki "Build" düğmesine basın. IDE kullanmayan geliştiriciler, mevcut herhangi bir "bir CMake projesi nasıl derlenir" kılavuzunu takip edebilir. Binary modül, CMake çıktısının yerleştirildiği yerde, doğru isim zaten uygulanmış olarak oluşacaktır.

İsimlendirme & 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(isim) 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'i gereklidir)
gmcl_example_win64.dll İstemci example Windows x64 (x86-64 branch'i 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'i 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'i gereklidir)
Menü durumu (menu state) modülleri gmsv_isim_platform.dll altında kategorize edilir

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