Files
d330viewer/CMakeLists.txt

166 lines
4.2 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
cmake_minimum_required(VERSION 3.15)
project(D330Viewer VERSION 1.0.0 LANGUAGES CXX C)
# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Qt6特定配置
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
# 设置输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR}/bin)
# 添加include目录
include_directories(${CMAKE_SOURCE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/src)
# ==================== 查找依赖库 ====================
# 查找Qt6
find_package(Qt6 REQUIRED COMPONENTS
Core
Widgets
OpenGL
OpenGLWidgets
Network
Concurrent
)
# 查找PCL
find_package(PCL REQUIRED COMPONENTS common io visualization)
if(PCL_FOUND)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
message(STATUS "PCL found: ${PCL_VERSION}")
endif()
# 查找OpenCV
find_package(OpenCV REQUIRED COMPONENTS core highgui imgproc)
if(OpenCV_FOUND)
include_directories(${OpenCV_INCLUDE_DIRS})
message(STATUS "OpenCV found: ${OpenCV_VERSION}")
endif()
# 查找OpenCL
find_package(OpenCL REQUIRED)
if(OpenCL_FOUND)
include_directories(${OpenCL_INCLUDE_DIRS})
message(STATUS "OpenCL found")
endif()
# ==================== 源文件配置 ====================
set(GUI_SOURCES
src/main.cpp
src/gui/MainWindow.cpp
src/gui/PointCloudWidget.cpp
src/gui/PointCloudGLWidget.cpp
)
set(CONFIG_SOURCES
src/config/ConfigManager.cpp
)
set(CORE_SOURCES
src/core/NetworkManager.cpp
src/core/DeviceScanner.cpp
src/core/GVSPParser.cpp
src/core/Logger.cpp
src/core/PointCloudProcessor.cpp
)
set(HEADERS
src/gui/MainWindow.h
include/gui/PointCloudWidget.h
include/gui/PointCloudGLWidget.h
src/config/ConfigManager.h
src/core/NetworkManager.h
src/core/DeviceScanner.h
include/core/Logger.h
include/core/GVSPParser.h
include/core/PointCloudProcessor.h
)
# 资源文件
set(RESOURCES
resources/resources.qrc
resources/app_icon.rc
)
# 创建可执行文件
add_executable(${PROJECT_NAME} WIN32
${GUI_SOURCES}
${CONFIG_SOURCES}
${CORE_SOURCES}
${HEADERS}
${RESOURCES}
)
# 链接库
target_link_libraries(${PROJECT_NAME}
Qt6::Core
Qt6::Widgets
Qt6::OpenGL
Qt6::OpenGLWidgets
Qt6::Network
Qt6::Concurrent
${PCL_LIBRARIES}
${OpenCV_LIBS}
${OpenCL_LIBRARIES}
ws2_32
)
# Windows特定配置
if(WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE
_WINSOCK_DEPRECATED_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS
)
endif()
# ==================== 安装配置 ====================
# 安装可执行文件到根目录
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION .
)
# 安装所有DLL到根目录
install(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/
DESTINATION .
FILES_MATCHING PATTERN "*.dll"
)
# 安装Qt平台插件到platforms子目录
install(DIRECTORY ${CMAKE_SOURCE_DIR}/bin/platforms/
DESTINATION platforms
FILES_MATCHING PATTERN "*.dll"
)
# ==================== CPack配置 - MSI安装程序 ====================
set(CPACK_PACKAGE_NAME "D330Viewer")
set(CPACK_PACKAGE_VENDOR "Lorenzo Zhao")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "D330M Depth Camera Control System")
set(CPACK_PACKAGE_VERSION "0.2.0")
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "2")
set(CPACK_PACKAGE_VERSION_PATCH "0")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "D330Viewer")
# WiX生成器配置用于MSI
set(CPACK_GENERATOR "WIX")
set(CPACK_WIX_UPGRADE_GUID "42365CB0-5840-487F-A2C8-56F9699A9022")
set(CPACK_WIX_PROGRAM_MENU_FOLDER "D330Viewer")
set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/LICENSE.rtf")
# 创建开始菜单和桌面快捷方式
set(CPACK_PACKAGE_EXECUTABLES "D330Viewer" "D330Viewer")
set(CPACK_CREATE_DESKTOP_LINKS "D330Viewer")
# 包含CPack模块
include(CPack)