aboutsummaryrefslogtreecommitdiff
path: root/libs/usvfs/src/usvfs_dll/CMakeLists.txt
blob: 2520b50c3213e8c1d2e2624fa928e809334ec097 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
cmake_minimum_required(VERSION 3.16)

include(GNUInstallDirs)

find_package(Boost CONFIG REQUIRED COMPONENTS thread)
find_package(spdlog CONFIG REQUIRED)

file(GLOB sources "*.cpp" "*.h")
source_group("" FILES ${sources})

file(GLOB hooks "hooks/*.cpp" "hooks/*.h")
source_group("dlls" FILES ${hooks})

add_library(usvfs_dll SHARED)
target_sources(usvfs_dll
    PRIVATE
        ${PROJECT_SOURCE_DIR}/include/usvfs/usvfsparametersprivate.h
        ${sources}
        ${hooks}
        version.rc
    PUBLIC
        FILE_SET HEADERS
        BASE_DIRS ${PROJECT_SOURCE_DIR}/include
        FILES
        ${PROJECT_SOURCE_DIR}/include/usvfs/dllimport.h
        ${PROJECT_SOURCE_DIR}/include/usvfs/logging.h
        ${PROJECT_SOURCE_DIR}/include/usvfs/sharedparameters.h
        ${PROJECT_SOURCE_DIR}/include/usvfs/usvfs_version.h
        ${PROJECT_SOURCE_DIR}/include/usvfs/usvfs.h
        ${PROJECT_SOURCE_DIR}/include/usvfs/usvfsparameters.h
)
target_link_libraries(usvfs_dll
    PRIVATE shared thooklib usvfs_helper
    Boost::thread spdlog::spdlog_header_only
    Shlwapi)
target_compile_definitions(usvfs_dll PRIVATE BUILDING_USVFS_DLL)
set_target_properties(usvfs_dll
    PROPERTIES
    ARCHIVE_OUTPUT_NAME usvfs${ARCH_POSTFIX}
    ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${USVFS_LIBDIR}
    ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${USVFS_LIBDIR}
    LIBRARY_OUTPUT_NAME usvfs${ARCH_POSTFIX}
    LIBRARY_OUTPUT_DIRECTORY_DEBUG ${USVFS_LIBDIR}
    LIBRARY_OUTPUT_DIRECTORY_RELEASE ${USVFS_LIBDIR}
    PDB_OUTPUT_DIRECTORY_DEBUG ${USVFS_LIBDIR}
    PDB_OUTPUT_DIRECTORY_RELEASE ${USVFS_LIBDIR}
    RUNTIME_OUTPUT_NAME usvfs${ARCH_POSTFIX}
    RUNTIME_OUTPUT_DIRECTORY_DEBUG ${USVFS_LIBDIR}
    RUNTIME_OUTPUT_DIRECTORY_RELEASE ${USVFS_LIBDIR})

install(TARGETS usvfs_dll EXPORT usvfs${ARCH_POSTFIX}Targets FILE_SET HEADERS)
install(FILES $<TARGET_PDB_FILE:usvfs_dll> DESTINATION pdb OPTIONAL)
install(EXPORT usvfs${ARCH_POSTFIX}Targets
    FILE usvfs${ARCH_POSTFIX}Targets.cmake
    NAMESPACE usvfs${ARCH_POSTFIX}::
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/usvfs
)