Code Monkey home page Code Monkey logo

commonlibsse-ng-template-plugin's Introduction

Skyrim SKSE CommonLibSSE-NG Plugin Template

contributions welcome build

A Plugin Template for CommonLibSSE-NG to build for Skyrim versions SE, AE, VR, and GOG. Included libraries:

Plugin README
CommonLibSSE-NG https://github.com/CharmedBaryon/CommonLibSSE-NG/
SimpleINI Read/Write ini configurations.
spdlog Used for logging to log file.
RapidCSV Used by CommonLibSSE for unit tests
Catch2 A unit testing framework for C++

I set out to create this template for two reasons:

  1. Offer another updated solution for would-be SKSE plugin developers to utilize and learn plugin development.
  2. Offer a more packaged template with some common tools such as catch2, simpleini, and spdlog.

This work absolutely could not be done without these authors and their original works and derivatives:

I plan on maintaining this repository as I continue plugin development, adding and removing features as I deem necessary. Feel free to join the Modding Guild community where you can find and message me directly.

Requirements

  1. Visual Studio Code + Visual Studio Build Tools or Visual Studio Community 2022
  2. Git or Github Desktop
  3. Ninja (if using Visual Studio Build Tools)
  4. Vcpkg

Quickstart

Want a full guide? Checkout my Full Installation Guide here.

  1. Setup VCPKG_ROOT system envrionment variable to point towards "C:/path/to/vcpkg"
  2. (optional) Setup SKYRIM_MODS_FOLDER system environment variable to point twards "C:/path/to/Mod Organizer 2/mods/folder"

    Not doing this will result in the DLL exporting to "${CMAKE_SOURCE_DIR}/build" instead.

  3. (optional) If using Visual Studio Code, Add "C:/path/to/ninja/ninja.exe" to your envrionment PATH.
  4. Using Visual Studio Code open the project folder with VSCode.
  5. If prompted, install both C/C++ & CMake tools provided by Visual Studio Code.
  6. Select a configure preset
  • Debug (MSVC) - Standard CXX debug compile parameters without Catch2 unit tests.
  • Debug with Catch2 (MSVC) - Same as above, but with additional Catch2 unit test libraries.
  • Release (MSVC) - Release version for distribution.
  1. Click Build and allow it time to compile.

Project Settings

By default, the build settings will output the .dll into "/build/SKSE/Plugins/" unless you setup your SKYRIM_MODS_FOLDER as detailed above.

While you're inside the CMakeLists.txt file, you can change your plugin name at the top of the file.

project(
    TemplatePlugin <- Specifiy your PluginName
    VERSION 0.0.1 <- Specify your .dll version
    LANGUAGES CXX <- Do not touch
)

Just below that, you can configure optional Build settings.

set(BUILD_TESTS OFF) <- OFF/ON enables CommonLibSSE-NG specific Catch2 unit tests (default OFF).
set(BUILD_TESTS_PROJECT OFF) <- OFF/ON enables Project specific Catch2 unit tests (default OFF).

Further down, you can modify your .dll output directory.

set(OUTPUT_FOLDER "${CMAKE_SOURCE_DIR}/build") <- Used if `SKYRIM_MODS_FOLDER` is not set.
if(DEFINED ENV{SKYRIM_MODS_FOLDER} AND IS_DIRECTORY "$ENV{SKYRIM_MODS_FOLDER}")
    set(OUTPUT_FOLDER "$ENV{SKYRIM_MODS_FOLDER}/${PROJECT_NAME} ${CMAKE_BUILD_TYPE}") 
endif()
#set(OUTPUT_FOLDER "C:/Path/To/Custom/Output") <- Uncomment and use for custom path.

Be sure to checkout the Wiki for this Plugin!

SKSE Development Resources

A work-in-progress website dedicated to documenting modding, and authors.

Very useful for SKSE plugin development. Might as well be a required resource at this point.

More to come...

commonlibsse-ng-template-plugin's People

Contributors

patchu1i avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.