Files
seadisk/CMakeLists.txt
T
2026-06-20 16:11:17 +08:00

86 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 4.2)
project(seadisk C CXX)
set(CMAKE_CXX_STANDARD 20)
find_package(tl-expected CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
find_package(date CONFIG REQUIRED)
find_package(cpr CONFIG REQUIRED)
find_package(argparse CONFIG REQUIRED)
find_package(ada CONFIG REQUIRED)
cmake_host_system_information(
RESULT WINFSP_DIR
QUERY WINDOWS_REGISTRY
"HKLM\\SOFTWARE\\WinFsp"
VALUE "InstallDir"
)
message(STATUS "WinFsp=${WINFSP_DIR}")
set(WINFSP_INCLUDE_DIR "${WINFSP_DIR}/inc")
message(STATUS "${CMAKE_SYSTEM_PROCESSOR}")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "AMD64|x86_64")
set(WINFSP_PLATFORM x64)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64")
set(WINFSP_PLATFORM a64)
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "X86|i386|i686")
set(WINFSP_PLATFORM x86)
endif ()
set(WINFSP_LIB "winfsp-${WINFSP_PLATFORM}.lib")
message(STATUS "WinFSP lib: ${WINFSP_LIB}")
add_executable(seadisk src/main.cpp
include/seafile/seafile_api.hpp
include/seafile/exception.hpp
include/seafile/server_info.hpp
include/seafile/auth_token.hpp
include/seafile/default_repo.hpp
include/seafile/token_type.hpp
include/seafile/repo_info.hpp
include/seafile/repo_entry.hpp
include/seafile/account_info.hpp
include/seafile/file_info.hpp
include/seafile/dir_info.hpp
include/seafile/fs/file_context.hpp
include/seafile/fs/seafile_file_system.hpp
src/seafile/fs/seafile_file_system.cpp
)
target_compile_definitions(seadisk PRIVATE
UNICODE
_UNICODE
)
target_include_directories(seadisk PRIVATE
"${WINFSP_INCLUDE_DIR}"
include
)
target_link_directories(seadisk PRIVATE
"${WINFSP_DIR}/lib"
)
target_link_libraries(seadisk PRIVATE
${WINFSP_LIB}
delayimp
tl::expected
nlohmann_json::nlohmann_json
date::date
date::date-tz
cpr::cpr
argparse::argparse
ada::ada
)
target_link_options(seadisk PRIVATE
"/DELAYLOAD:winfsp-${WINFSP_PLATFORM}.dll"
)
target_compile_options(seadisk PRIVATE
/Zc:preprocessor
)