forked from Palm1r/llmqore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
134 lines (109 loc) · 3.65 KB
/
Copy pathCMakeLists.txt
File metadata and controls
134 lines (109 loc) · 3.65 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
cmake_minimum_required(VERSION 3.21)
project(LLMQore
VERSION 0.8.0
LANGUAGES CXX
DESCRIPTION "Qt/C++ library for LLM provider integration"
)
if(NOT DEFINED QT_VERSION_MAJOR)
find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core Network Concurrent)
endif()
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network Concurrent)
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/LLMQore/Version.hpp.in
${CMAKE_CURRENT_BINARY_DIR}/include/LLMQore/Version.hpp
@ONLY
)
add_library(LLMQore)
add_library(LLMQore::LLMQore ALIAS LLMQore)
set_target_properties(LLMQore PROPERTIES
AUTOMOC ON
CXX_STANDARD 20
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
POSITION_INDEPENDENT_CODE ON
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
add_subdirectory(source)
target_include_directories(LLMQore
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
$<INSTALL_INTERFACE:include>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/source
)
target_link_libraries(LLMQore
PUBLIC
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Network
PRIVATE
Qt${QT_VERSION_MAJOR}::Concurrent
)
target_compile_definitions(LLMQore PRIVATE LLMQORE_LIBRARY)
if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(LLMQore PUBLIC LLMQORE_STATIC_LIB)
endif()
target_compile_options(LLMQore PRIVATE
$<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-Wall -Wextra -Wpedantic>
$<$<CXX_COMPILER_ID:MSVC>:/W4>
)
# --- Installation ---
option(LLMQORE_INSTALL "Generate install targets" ${PROJECT_IS_TOP_LEVEL})
if(LLMQORE_INSTALL)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
install(TARGETS LLMQore
EXPORT LLMQoreTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(DIRECTORY include/LLMQore
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PATTERN "*.in" EXCLUDE
)
if(QT_VERSION_MAJOR EQUAL 5)
install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/include/QPromise
${CMAKE_CURRENT_SOURCE_DIR}/include/QByteArrayView
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
endif()
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/LLMQore/Version.hpp
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/LLMQore
)
install(EXPORT LLMQoreTargets
FILE LLMQoreTargets.cmake
NAMESPACE LLMQore::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LLMQore
)
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/LLMQoreConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/LLMQoreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LLMQore
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/LLMQoreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/LLMQoreConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/LLMQoreConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LLMQore
)
endif()
option(LLMQORE_BUILD_TESTS "Build LLMQore tests" ${PROJECT_IS_TOP_LEVEL})
if(LLMQORE_BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
option(LLMQORE_BUILD_EXAMPLES "Build LLMQore examples" ${PROJECT_IS_TOP_LEVEL})
if(LLMQORE_BUILD_EXAMPLES)
add_subdirectory(example)
endif()
option(LLMQORE_BUILD_MCP_BRIDGE "Build MCP Bridge" ${PROJECT_IS_TOP_LEVEL})
if(LLMQORE_BUILD_MCP_BRIDGE)
add_subdirectory(mcp-bridge)
endif()