|
| 1 | +# CMake |
| 2 | +cmake_minimum_required(VERSION 3.21) |
| 3 | +project(O2FS) |
| 4 | + |
| 5 | +# C++ 17 |
| 6 | +set(CMAKE_CXX_STANDARD 17) |
| 7 | +set(CMAKE_CXX_STANDARD_REQUIRED ON) |
| 8 | + |
| 9 | +# Binaries names |
| 10 | +set(EXECUTABLE_NAME "O2FS.Launcher") |
| 11 | +set(LIBRARY_NAME "O2FS") |
| 12 | + |
| 13 | +# Main directories |
| 14 | +file(GLOB_RECURSE SRCS src/O2FS/*.cpp) |
| 15 | +file(GLOB_RECURSE HEADERS src/O2FS/*.hpp) |
| 16 | +file(GLOB_RECURSE HEADERS include/O2FS/*.hpp include/Logger.hpp) |
| 17 | +file(GLOB_RECURSE EXTLIBS_HEADERS extlibs/include/*.hpp) |
| 18 | +include_directories(src) |
| 19 | +include_directories(include) |
| 20 | +include_directories(extlibs/include) |
| 21 | + |
| 22 | +# Launcher directories |
| 23 | +file(GLOB_RECURSE LAUNCHER_SRCS src/Launcher/*.cpp) |
| 24 | +file(GLOB_RECURSE LAUNCHER_HEADERS include/Launcher/*.hpp include/Logger.hpp) |
| 25 | +include_directories(include/Launcher) |
| 26 | + |
| 27 | +# Modules directories |
| 28 | +set(MODULES_DIR "${CMAKE_SOURCE_DIR}/extlibs/lib") |
| 29 | +set(DETOUR_LIB ${MODULES_DIR}/detours.lib) |
| 30 | + |
| 31 | +# Source and linkage |
| 32 | +add_library(${LIBRARY_NAME} SHARED ${SRCS} ${HEADERS} ${EXTLIBS_HEADERS}) |
| 33 | +add_executable(${EXECUTABLE_NAME} ${LAUNCHER_SRCS} ${LAUNCHER_HEADERS} ${EXTLIBS_HEADERS}) |
| 34 | +target_link_libraries(${LIBRARY_NAME} ${DETOUR_LIB}) |
| 35 | +target_link_libraries(${EXECUTABLE_NAME} ${DETOUR_LIB}) |
| 36 | + |
| 37 | +# Output directory |
| 38 | +set(OUTPUT_DIR "${CMAKE_SOURCE_DIR}/bin/") |
| 39 | +file(MAKE_DIRECTORY ${OUTPUT_DIR}) |
| 40 | + |
| 41 | +set_target_properties(${EXECUTABLE_NAME} PROPERTIES |
| 42 | + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIR} |
| 43 | + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIR} |
| 44 | + ) |
| 45 | +set_target_properties(${LIBRARY_NAME} PROPERTIES |
| 46 | + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${OUTPUT_DIR} |
| 47 | + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${OUTPUT_DIR} |
| 48 | + ) |
| 49 | +set_property(TARGET ${LIBRARY_NAME} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") |
| 50 | +set_property(TARGET ${EXECUTABLE_NAME} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") |
| 51 | + |
0 commit comments