build: Streamlined plugin creation process

This commit is contained in:
WerWolv
2023-07-27 00:53:04 +02:00
parent 4792a29fac
commit 94a02c4b6d
4 changed files with 59 additions and 89 deletions

View File

@@ -1,19 +1,17 @@
cmake_minimum_required(VERSION 3.16)
# Change this to the name of your plugin #
project(script_loader)
# Add your source files here #
find_package(CoreClrEmbed)
add_library(${PROJECT_NAME} SHARED
add_imhex_plugin(
NAME
script_loader
SOURCES
source/plugin_script_loader.cpp
INCLUDES
include
)
# Add additional include directories here #
target_include_directories(${PROJECT_NAME} PRIVATE include)
# Add additional libraries here #
target_link_libraries(${PROJECT_NAME} PRIVATE libimhex ${FMT_LIBRARIES})
if (CoreClrEmbed_FOUND)
add_library(nethost SHARED IMPORTED)
@@ -26,10 +24,10 @@ if (CoreClrEmbed_FOUND)
BUILD_RPATH ${CoreClrEmbed_FOLDER}
INSTALL_RPATH ${CoreClrEmbed_FOLDER})
target_link_directories(${PROJECT_NAME} PRIVATE ${CoreClrEmbed_FOLDER})
target_include_directories(${PROJECT_NAME} PRIVATE ${CoreClrEmbed_INCLUDE_DIRS})
target_compile_definitions(${PROJECT_NAME} PRIVATE DOTNET_PLUGINS=1)
target_sources(${PROJECT_NAME} PRIVATE
target_link_directories(script_loader PRIVATE ${CoreClrEmbed_FOLDER})
target_include_directories(script_loader PRIVATE ${CoreClrEmbed_INCLUDE_DIRS})
target_compile_definitions(script_loader PRIVATE DOTNET_PLUGINS=1)
target_sources(script_loader PRIVATE
source/loaders/dotnet/dotnet_loader.cpp
source/script_api/v1/mem.cpp
@@ -44,24 +42,6 @@ if (CoreClrEmbed_FOUND)
endif ()
add_subdirectory(dotnet)
add_dependencies(${PROJECT_NAME} AssemblyLoader)
add_dependencies(script_loader AssemblyLoader)
endif ()
# ---- No need to change anything from here downwards unless you know what you're doing ---- #
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_SHARED_LIBRARY_PREFIX "")
set(CMAKE_SHARED_LIBRARY_SUFFIX ".hexplug")
target_compile_definitions(${PROJECT_NAME} PRIVATE IMHEX_PROJECT_NAME="${PROJECT_NAME}")
target_compile_definitions(${PROJECT_NAME} PRIVATE IMHEX_VERSION="${IMHEX_VERSION_STRING}")
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
setupCompilerFlags(${PROJECT_NAME})
set(LIBROMFS_RESOURCE_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/romfs)
set(LIBROMFS_PROJECT_NAME ${PROJECT_NAME})
add_subdirectory(../../lib/external/libromfs ${CMAKE_CURRENT_BINARY_DIR}/libromfs)
set_target_properties(${LIBROMFS_LIBRARY} PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBROMFS_LIBRARY})
endif ()