111 lines
2.9 KiB
CMake
111 lines
2.9 KiB
CMake
# ============================================================
|
|
# vqt6 CMakeLists.txt — 构建 vqt6 C 桥接层
|
|
#
|
|
# 默认产物: libvqt6_bridge.a (静态库)
|
|
# 可选产物: vqt6_bridge.dll (动态库)
|
|
#
|
|
# 使用:
|
|
# cmake -B build -S .
|
|
# cmake --build build --config Release
|
|
# ============================================================
|
|
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(vqt6_bridge CXX C)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
# 构建选项
|
|
option(VQT6_BUILD_SHARED "Build vqt6 as shared library (DLL)" OFF)
|
|
option(VQT6_BUILD_STATIC "Build vqt6 as static library" ON)
|
|
option(VQT6_BUILD_EXAMPLES "Build example programs" OFF)
|
|
|
|
# Qt6 依赖
|
|
find_package(Qt6 6.5 REQUIRED COMPONENTS
|
|
Core
|
|
Gui
|
|
Widgets
|
|
Network
|
|
)
|
|
|
|
# Win32 GUI 应用不需要控制台
|
|
if(WIN32)
|
|
set(CMAKE_WIN32_EXECUTABLE OFF)
|
|
endif()
|
|
|
|
# 公共源文件
|
|
set(VQT6_SOURCES
|
|
_bridge_core.cpp
|
|
_bridge_widgets.cpp
|
|
_bridge_gui.cpp
|
|
_bridge_network.cpp
|
|
)
|
|
|
|
set(VQT6_HEADERS
|
|
_bridge.h
|
|
_bridge_widgets.h
|
|
_bridge_gui.h
|
|
_bridge_network.h
|
|
)
|
|
|
|
# Qt 模块
|
|
set(VQT6_QT_MODULES
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Widgets
|
|
Qt6::Network
|
|
)
|
|
|
|
# ============================================================
|
|
# 静态库
|
|
# ============================================================
|
|
if(VQT6_BUILD_STATIC)
|
|
add_library(vqt6_bridge_static STATIC ${VQT6_SOURCES} ${VQT6_HEADERS})
|
|
target_link_libraries(vqt6_bridge_static PUBLIC ${VQT6_QT_MODULES})
|
|
target_compile_definitions(vqt6_bridge_static PUBLIC VQT6_BRIDGE_STATIC)
|
|
target_include_directories(vqt6_bridge_static PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
set_target_properties(vqt6_bridge_static PROPERTIES
|
|
OUTPUT_NAME vqt6_bridge
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
)
|
|
endif()
|
|
|
|
# ============================================================
|
|
# 动态库
|
|
# ============================================================
|
|
if(VQT6_BUILD_SHARED)
|
|
add_library(vqt6_bridge SHARED ${VQT6_SOURCES} ${VQT6_HEADERS})
|
|
target_link_libraries(vqt6_bridge PUBLIC ${VQT6_QT_MODULES})
|
|
target_compile_definitions(vqt6_bridge PRIVATE VQT6_BRIDGE_BUILD)
|
|
target_include_directories(vqt6_bridge PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
set_target_properties(vqt6_bridge PROPERTIES
|
|
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
)
|
|
endif()
|
|
|
|
# ============================================================
|
|
# 安装
|
|
# ============================================================
|
|
install(TARGETS vqt6_bridge_static vqt6_bridge
|
|
ARCHIVE DESTINATION lib
|
|
LIBRARY DESTINATION lib
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
|
|
install(FILES ${VQT6_HEADERS}
|
|
DESTINATION include/vqt6
|
|
)
|
|
|
|
# ============================================================
|
|
# 示例
|
|
# ============================================================
|
|
if(VQT6_BUILD_EXAMPLES)
|
|
add_subdirectory(examples)
|
|
endif()
|