mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-12-23 03:40:05 +00:00
62 lines
2.4 KiB
CMake
62 lines
2.4 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
|
project(OpenFusion)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
execute_process(COMMAND git describe --tags OUTPUT_VARIABLE GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
|
|
# OpenFusion supports multiple packet/struct versions
|
|
# 104 is the default version to build which can be changed
|
|
# For example: cmake -B build -DPROTOCOL_VERSION=728
|
|
set(PROTOCOL_VERSION 104 CACHE STRING "The packet version to build")
|
|
|
|
add_compile_definitions(PROTOCOL_VERSION=${PROTOCOL_VERSION})
|
|
|
|
# Disallow in-source builds
|
|
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
|
|
message(FATAL_ERROR "In-source builds not allowed. Please refer to the wiki for more information. Please remove the CMakeFiles folder and the CMakeCache.txt file.")
|
|
endif()
|
|
|
|
# Output binaries to the bin folder in the source directory
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
|
|
|
|
# Put CMake targets (ALL_BUILD/ZERO_CHECK) into a folder
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
# Set the OpenFusion project as the default startup project for VS
|
|
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT openfusion)
|
|
|
|
if (WIN32)
|
|
# Set the output binary name to winfusion to match the regular Makefile
|
|
set(BIN_NAME winfusion)
|
|
else()
|
|
set(BIN_NAME fusion)
|
|
endif()
|
|
|
|
include_directories(src vendor)
|
|
|
|
file(GLOB_RECURSE SOURCES src/**.[ch]pp vendor/**.[ch]pp vendor/**.[ch] version.h)
|
|
|
|
configure_file(version.h.in ${CMAKE_SOURCE_DIR}/version.h @ONLY)
|
|
|
|
add_executable(openfusion ${SOURCES})
|
|
|
|
set_target_properties(openfusion PROPERTIES OUTPUT_NAME ${BIN_NAME})
|
|
|
|
# find sqlite3 and use it
|
|
find_package(SQLite3 REQUIRED)
|
|
target_include_directories(openfusion PRIVATE ${SQLite3_INCLUDE_DIRS})
|
|
target_link_libraries(openfusion PRIVATE ${SQLite3_LIBRARIES})
|
|
|
|
# Makes it so config, tdata, etc. get picked up when starting via the debugger in VS
|
|
set_property(TARGET openfusion PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
|
|
|
# Use pthreads if not generating a VS solution or MinGW makefile (because MinGW will prefer Win32 threads)
|
|
# Checking if the compiler ID is MSVC will allow us to open the project as a CMake project in VS.
|
|
# It's not something you should do, but it's there if you need it...
|
|
if (NOT CMAKE_GENERATOR MATCHES "Visual Studio" AND NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND NOT CMAKE_GENERATOR MATCHES "MinGW Makefiles")
|
|
find_package(Threads REQUIRED)
|
|
target_link_libraries(openfusion PRIVATE pthread)
|
|
endif()
|