4afedb5131
<!-- Please provide as much information as possible about what your PR aims to do. PRs with no description will most likely be closed until more information is provided. If you're planing on changing fundamental behaviour or add big new features, please open a GitHub Issue first before starting to work on it. If it's not something big and you still want to contact us about it, feel free to do so ! --> ### Problem description <!-- Describe the bug that you fixed/feature request that you implemented, or link to an existing issue describing it --> Accomodate -> Accommodate ### Implementation description <!-- Explain what you did to correct the problem --> ### Screenshots <!-- If your change is visual, take a screenshot showing it. Ideally, make before/after sceenshots --> ### Additional things <!-- Anything else you would like to say -->
88 lines
4.2 KiB
CMake
88 lines
4.2 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
# Options
|
|
option(IMHEX_PLUGINS_IN_SHARE "Put the plugins in share/imhex/plugins instead of lib[..]/imhex/plugins (Linux only)" OFF)
|
|
option(IMHEX_STRIP_RELEASE "Strip the release builds" ON )
|
|
option(IMHEX_OFFLINE_BUILD "Enable offline build" OFF)
|
|
option(IMHEX_IGNORE_BAD_CLONE "Disable the bad clone prevention checks" OFF)
|
|
option(IMHEX_PATTERNS_PULL_MASTER "Download latest files from master branch of the ImHex-Patterns repo" OFF)
|
|
option(IMHEX_IGNORE_BAD_COMPILER "Allow compiling with an unsupported compiler" OFF)
|
|
option(IMHEX_USE_GTK_FILE_PICKER "Use GTK file picker instead of xdg-desktop-portals (Linux only)" OFF)
|
|
option(IMHEX_DISABLE_STACKTRACE "Disables support for printing stack traces" OFF)
|
|
option(IMHEX_BUNDLE_DOTNET "Bundle .NET runtime" ON )
|
|
option(IMHEX_ENABLE_LTO "Enables Link Time Optimizations if possible" OFF)
|
|
option(IMHEX_USE_DEFAULT_BUILD_SETTINGS "Use default build settings" OFF)
|
|
option(IMHEX_STRICT_WARNINGS "Enable most available warnings and treat them as errors" ON )
|
|
option(IMHEX_STATIC_LINK_PLUGINS "Statically link all plugins into the main executable" OFF)
|
|
option(IMHEX_GENERATE_PACKAGE "Specify if a native package should be built. (Windows and MacOS only)" OFF)
|
|
option(IMHEX_ENABLE_UNITY_BUILD "Enables building ImHex as a unity build." OFF)
|
|
option(IMHEX_GENERATE_PDBS "Enable generating PDB files in non-debug builds (Windows only)" OFF)
|
|
option(IMHEX_REPLACE_DWARF_WITH_PDB "Remove DWARF information from binaries when generating PDBS (Windows only)" OFF)
|
|
option(IMHEX_ENABLE_STD_ASSERTS "Enable debug asserts in the C++ std library. (Breaks Plugin ABI!)" OFF)
|
|
option(IMHEX_ENABLE_UNIT_TESTS "Enable building unit tests" OFF)
|
|
option(IMHEX_ENABLE_PRECOMPILED_HEADERS "Enable precompiled headers" OFF)
|
|
option(IMHEX_COMPRESS_DEBUG_INFO "Compress debug information" ON )
|
|
|
|
set(IMHEX_BASE_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
set(CMAKE_MODULE_PATH "${IMHEX_BASE_FOLDER}/cmake/modules")
|
|
|
|
# Optional IDE support
|
|
include("${IMHEX_BASE_FOLDER}/cmake/ide_helpers.cmake")
|
|
|
|
# Basic compiler and cmake configurations
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
|
|
include("${IMHEX_BASE_FOLDER}/cmake/build_helpers.cmake")
|
|
|
|
# Setup project
|
|
loadVersion(IMHEX_VERSION IMHEX_VERSION_PLAIN)
|
|
setVariableInParent(IMHEX_VERSION ${IMHEX_VERSION})
|
|
configureCMake()
|
|
|
|
project(imhex
|
|
LANGUAGES C CXX
|
|
VERSION ${IMHEX_VERSION_PLAIN}
|
|
DESCRIPTION "The ImHex Hex Editor"
|
|
HOMEPAGE_URL "https://imhex.werwolv.net"
|
|
)
|
|
configureProject()
|
|
|
|
# Add ImHex sources
|
|
add_custom_target(imhex_all ALL)
|
|
|
|
# Make sure project is configured correctly
|
|
setDefaultBuiltTypeIfUnset()
|
|
detectBadClone()
|
|
verifyCompiler()
|
|
|
|
detectBundledPlugins()
|
|
|
|
# Add various defines
|
|
detectOS()
|
|
addDefines()
|
|
|
|
# Configure packaging and install targets
|
|
configurePackingResources()
|
|
setUninstallTarget()
|
|
addBundledLibraries()
|
|
|
|
add_subdirectory(lib/libimhex)
|
|
add_subdirectory(main)
|
|
addPluginDirectories()
|
|
|
|
# Add unit tests
|
|
if (IMHEX_ENABLE_UNIT_TESTS)
|
|
enable_testing()
|
|
add_subdirectory(tests EXCLUDE_FROM_ALL)
|
|
endif ()
|
|
|
|
# Configure more resources that will be added to the install package
|
|
generatePDBs()
|
|
generateSDKDirectory()
|
|
|
|
# Handle package generation
|
|
createPackage()
|
|
|
|
# Accommodate IDEs with FOLDER support
|
|
tweakTargetsForIDESupport()
|