cmake_minimum_required(VERSION 3.5) project(PowerDesigner LANGUAGES CXX VERSION 1.0) set(ADS_VERSION 4.3.1) add_subdirectory(QtADS) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) find_package(Qt${QT_VERSION_MAJOR} 5.5 COMPONENTS Core Gui Widgets REQUIRED) set(CMAKE_INCLUDE_CURRENT_DIR ON) #默认ui文件要和.h头文件在一个目录,若不在一个目录,需要指定其所在目录 set(CMAKE_AUTOUIC_SEARCH_PATHS "ui") if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") set(pd_PlatformDir "x86") else() if(DEFINED CMAKE_SYSTEM_PROCESSOR) if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") set(pd_PlatformDir "x64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|AARCH64") set(pd_PlatformDir "aarch64") else() set(pd_PlatformDir "x64") endif() else() set(pd_PlatformDir "x64") endif() endif() set(H_HEADER_FILES include/mainwindow.h ) set(CPP_SOURCE_FILES source/main.cpp source/mainwindow.cpp ) set(UI_FILES ui/mainwindow.ui ) # 包含源文件目录 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(PowerDesigner MANUAL_FINALIZATION ${H_HEADER_FILES} ${CPP_SOURCE_FILES} ${UI_FILES} resource/PowerDesigner.qrc ) else() if(ANDROID) add_library(PowerDesigner SHARED ${H_HEADER_FILES} ${CPP_SOURCE_FILES} ${UI_FILES} resource/PowerDesigner.qrc ) else() add_executable(PowerDesigner WIN32 ${H_HEADER_FILES} ${CPP_SOURCE_FILES} ${UI_FILES} resource/PowerDesigner.qrc ) endif() endif() include_directories(include) target_include_directories(PowerDesigner PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../src") target_link_libraries(PowerDesigner PRIVATE qt${QT_VERSION_MAJOR}advanceddocking) target_link_libraries(PowerDesigner PUBLIC Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets) set_target_properties(PowerDesigner PROPERTIES AUTOMOC ON AUTORCC ON AUTOUIC ON CXX_STANDARD 14 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF VERSION 1.0 EXPORT_NAME "PowerDesigner with Qt Advanced Docking System" ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${pd_PlatformDir}/lib" LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${pd_PlatformDir}/lib" RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${pd_PlatformDir}/bin" )