PowerModeler/CMakeLists.txt

163 lines
4.9 KiB
CMake
Raw 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.5)
project(PowerModeler VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Sql)
#默认ui文件要和.h头文件在一个目录若不在一个目录需要指定其所在目录
set(CMAKE_AUTOUIC_SEARCH_PATHS "ui")
set(H_HEADER_FILES
include/global.h
include/logger.h
include/mainwindow.h
include/dbManager.h
include/dbBrowser.h
include/dbStructureNode.h
include/dbStructureModel.h
include/dbStructureView.h
include/connectionDialog.h
include/messageDialog.h
include/messageBox.h
include/settings.h
include/tableWidgetHoverDelegate.h
include/textColorPreserveDelegate.h
include/customMenu.h
include/multiLineHeaderView.h
include/modelInfoEditDialog.h
include/sqlQueryExecutor.h
include/attributeNamespace.h
include/attributeTableModel.h
include/attributeTableDelegate.h
include/attributeView.h
include/attributeSelector.h
include/maskLayer.h
include/maskManager.h
include/customBorderContainer.h
include/groupSelectionDialog.h
include/dataSyncManager.h
)
set(CPP_SOURCE_FILES
source/main.cpp
source/global.cpp
source/logger.cpp
source/mainwindow.cpp
source/dbManager.cpp
source/dbBrowser.cpp
source/dbStructureNode.cpp
source/dbStructureModel.cpp
source/dbStructureView.cpp
source/connectionDialog.cpp
source/messageDialog.cpp
source/messageBox.cpp
source/settings.cpp
source/tableWidgetHoverDelegate.cpp
source/textColorPreserveDelegate.cpp
source/customMenu.cpp
source/multiLineHeaderView.cpp
source/modelInfoEditDialog.cpp
source/sqlQueryExecutor.cpp
source/attributeTableModel.cpp
source/attributeTableDelegate.cpp
source/attributeView.cpp
source/attributeSelector.cpp
source/maskLayer.cpp
source/maskManager.cpp
source/customBorderContainer.cpp
source/groupSelectionDialog.cpp
source/dataSyncManager.cpp
)
set(UI_FILES
ui/mainwindow.ui
ui/dbBrowser.ui
ui/connectionDialog.ui
ui/messageDialog.ui
ui/modelInfoEditDialog.ui
ui/textEditWidget.ui
ui/attributeSelector.ui
ui/groupSelectionDialog.ui
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(PowerModeler
MANUAL_FINALIZATION
${H_HEADER_FILES}
${CPP_SOURCE_FILES}
${UI_FILES}
resource/PowerModeler.qrc
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET PowerModeler APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
if(ANDROID)
add_library(PowerModeler SHARED
${H_HEADER_FILES}
${CPP_SOURCE_FILES}
${UI_FILES}
resource/PowerModeler.qrc
)
# Define properties for Android with Qt 5 after find_package() calls as:
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
else()
add_executable(PowerModeler
${H_HEADER_FILES}
${CPP_SOURCE_FILES}
${UI_FILES}
resource/PowerModeler.qrc
)
endif()
endif()
target_include_directories(PowerModeler PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(PowerModeler PRIVATE Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Sql)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.PowerModeler)
endif()
set_target_properties(PowerModeler PROPERTIES
${BUNDLE_ID_OPTION}
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
include(GNUInstallDirs)
install(TARGETS PowerModeler
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
#配置文件
set(CONFIG_FILE "app_config.ini")
set(CONFIG_FILE_DIR "${CMAKE_BINARY_DIR}")
if(NOT EXISTS "${CONFIG_FILE_DIR}/${CONFIG_FILE}")
file(COPY app_config.ini DESTINATION "${CONFIG_FILE_DIR}")
else()
message(STATUS "${CONFIG_FILE} already exists, skipping copy")
endif()
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(PowerModeler)
endif()