|
|
@@ -0,0 +1,96 @@
|
|
|
+cmake_minimum_required(VERSION 3.20)
|
|
|
+
|
|
|
+# 工具链路径(用于交叉编译)
|
|
|
+set(TOOLCHAIN_PATH /opt/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin)
|
|
|
+
|
|
|
+set(CMAKE_SYSTEM_NAME Linux) # 设置目标系统名字
|
|
|
+set(CMAKE_SYSTEM_PROCESSOR aarch64) # 设置目标处理器架构
|
|
|
+# set(CMAKE_SYSROOT /opt/poky/1.4.1/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi) # 设置 sysroot
|
|
|
+
|
|
|
+# 设置交叉编译器
|
|
|
+set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-gcc)
|
|
|
+set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-g++)
|
|
|
+set(CMAKE_AR ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-ar)
|
|
|
+set(CMAKE_LINKER ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-ld)
|
|
|
+set(CMAKE_STRIP ${TOOLCHAIN_PATH}/aarch64-none-linux-gnu-strip)
|
|
|
+
|
|
|
+set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
|
+set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
|
+set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
+set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
|
+
|
|
|
+project(monitor VERSION 1.0.0 LANGUAGES CXX C)
|
|
|
+
|
|
|
+set(CMAKE_AUTOUIC ON)
|
|
|
+set(CMAKE_AUTOMOC ON)
|
|
|
+set(CMAKE_AUTORCC ON)
|
|
|
+
|
|
|
+set(CMAKE_CXX_STANDARD 17)
|
|
|
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
|
+set(CMAKE_BUILD_TYPE "Release")
|
|
|
+
|
|
|
+message(STATUS ${CMAKE_C_COMPILER})
|
|
|
+message(STATUS ${CMAKE_CXX_COMPILER})
|
|
|
+message(STATUS ${CMAKE_AR})
|
|
|
+message(STATUS ${CMAKE_LINKER})
|
|
|
+message(STATUS ${CMAKE_STRIP})
|
|
|
+
|
|
|
+# 设置自定义 Qt 路径
|
|
|
+set(QT5_DIR "/opt/qt/qt5.12.12")
|
|
|
+set(CMAKE_PREFIX_PATH
|
|
|
+ ${QT5_DIR}/lib/cmake
|
|
|
+)
|
|
|
+
|
|
|
+find_package(Qt5 REQUIRED COMPONENTS Widgets UiPlugin)
|
|
|
+
|
|
|
+set(PROJECT_SOURCE_DIR_LIST
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
|
+)
|
|
|
+
|
|
|
+foreach(item ${PROJECT_SOURCE_DIR_LIST})
|
|
|
+ string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" SOURCE_DIR ${item})
|
|
|
+ message("--------${SOURCE_DIR}--------")
|
|
|
+ if("${item}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
+ file(GLOB HEADERS CONFIGURE_DEPENDS ${item}/*.h ${item}/*.hpp)
|
|
|
+ else()
|
|
|
+ file(GLOB_RECURSE HEADERS CONFIGURE_DEPENDS ${item}/*.h ${item}/*.hpp)
|
|
|
+ endif()
|
|
|
+ foreach(item ${HEADERS})
|
|
|
+ string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" HEADER_FILE ${item})
|
|
|
+ message(STATUS ${HEADER_FILE})
|
|
|
+ list(APPEND PROJECT_HEADERS ${HEADER_FILE})
|
|
|
+ endforeach()
|
|
|
+
|
|
|
+ if("${item}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
+ file(GLOB SOURCES CONFIGURE_DEPENDS ${item}/*.c ${item}/*.cpp ${item}/*.cc)
|
|
|
+ else()
|
|
|
+ file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${item}/*.c ${item}/*.cpp ${item}/*.cc)
|
|
|
+ endif()
|
|
|
+ foreach(item ${SOURCES})
|
|
|
+ string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" SOURCE_FILE ${item})
|
|
|
+ message(STATUS ${SOURCE_FILE})
|
|
|
+ list(APPEND PROJECT_SOURCES ${SOURCE_FILE})
|
|
|
+ endforeach()
|
|
|
+endforeach()
|
|
|
+
|
|
|
+add_executable(${PROJECT_NAME}
|
|
|
+ ${PROJECT_HEADERS}
|
|
|
+ ${PROJECT_SOURCES}
|
|
|
+)
|
|
|
+
|
|
|
+target_include_directories(${PROJECT_NAME}
|
|
|
+ PRIVATE
|
|
|
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
|
+)
|
|
|
+
|
|
|
+set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
|
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/output/bin
|
|
|
+)
|
|
|
+
|
|
|
+target_link_libraries(${PROJECT_NAME}
|
|
|
+ PRIVATE
|
|
|
+ Qt5::Widgets
|
|
|
+ Qt5::UiPlugin
|
|
|
+)
|