comac_desk_app/CMakeLists.txt

144 lines
6.8 KiB
CMake
Raw Normal View History

2024-11-21 11:50:43 +08:00
CMAKE_MINIMUM_REQUIRED(VERSION 3.15.0 FATAL_ERROR)
set(CMAKE_CXX_STANDARD 17)
PROJECT(PostEnv)
# 设置项目库文件前缀和后缀,设置项目库文件的输出目录
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
SET(PROJECT_BUILD_TYPE_POSTFIX "d")
ELSE()
SET(PROJECT_BUILD_TYPE_POSTFIX "")
ENDIF()
#=========================引入外部依赖库=======================================
# 设置第三方库目录
SET(LIBRARY_THIRDPARTY_DIR ${PROJECT_SOURCE_DIR}/ThirdpartyLibs)
# 设置第三方依赖库的目录
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
SET(Qt5_DIR D:/Qt/Qt5.12.12/5.12.12/msvc2017_64/lib/cmake/Qt5)
SET(SUBDIR_THIRDPARTY_DIR ${LIBRARY_THIRDPARTY_DIR}/Libs/windows-x86_64)
SET(MODULE_VTK_DIR ${SUBDIR_THIRDPARTY_DIR}/vtk)
SET(MODULE_ElaWidgetTools_DIR ${SUBDIR_THIRDPARTY_DIR}/ElaWidgetTools)
SET(MODULE_QCustomPlot_DIR ${SUBDIR_THIRDPARTY_DIR}/QCustomPlot)
SET(MODULE_PYTHON_DIR ${SUBDIR_THIRDPARTY_DIR}/python37)
ENDIF()
# 检查第三方依赖库目录是否存在
IF(NOT EXISTS ${Qt5_DIR})
MESSAGE(SEND_ERROR "Please specified Qt5Config.cmake location!~ Qt5_DIR = ${Qt5_DIR}")
ENDIF()
IF(NOT EXISTS ${MODULE_VTK_DIR})
MESSAGE(SEND_ERROR "Please specified Module directory!~ MODULE_VTK_DIR = ${MODULE_VTK_DIR}")
ENDIF()
# 设置第三方依赖库的头文件目录
SET(LIBRARY_VTK_INCLUDE ${MODULE_VTK_DIR}/include)
# 设置第三方依赖库库文件目录,并检查是否存在额
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
#Set FastCAE Linux Dependencies Libraries Path
#VTK
SET(VTK_SO_DIR ${VTK_DIR2}/lib)
IF(NOT EXISTS ${VTK_SO_DIR})
MESSAGE(SEND_ERROR "VTK_SO_DIR is null, please specified VTK so directory!~")
ENDIF()
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
#VTK
#SET(MODULE_VTK_DIR D:/WorkSpace/comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk)
IF(NOT EXISTS ${MODULE_VTK_DIR})
MESSAGE(SEND_ERROR "Please specified Module directory!~ MODULE_VTK_DIR = ${MODULE_VTK_DIR}")
ENDIF()
SET(LIBRARY_VTK_INCLUDE ${MODULE_VTK_DIR}/include)
SET(LIBRARY_VTK_LIBDIR ${MODULE_VTK_DIR}/lib${PROJECT_BUILD_TYPE_POSTFIX})
SET(LIBRARY_VTK_BINDIR ${MODULE_VTK_DIR}/bin${PROJECT_BUILD_TYPE_POSTFIX})
FILE(GLOB LIBRARY_VTK_LIBS "${LIBRARY_VTK_LIBDIR}/*.lib")
FILE(GLOB LIBRARY_VTK_BINS "${LIBRARY_VTK_BINDIR}/*.dll")
IF(NOT LIBRARY_VTK_LIBS)
MESSAGE(SEND_ERROR "Please specified lib directory!~ LIBRARY_VTK_LIBDIR=${LIBRARY_VTK_LIBDIR}")
ENDIF()
IF(NOT LIBRARY_VTK_BINS)
MESSAGE(SEND_ERROR "Please specified bin directory!~ LIBRARY_VTK_BINDIR=${LIBRARY_VTK_BINDIR}")
ENDIF()
# UI组件库
SET(LIBRARY_ElaWidgetTools_INCLUDE ${MODULE_ElaWidgetTools_DIR}/include)
SET(LIBRARY_ElaWidgetTools_LIBDIR ${MODULE_ElaWidgetTools_DIR}/lib${PROJECT_BUILD_TYPE_POSTFIX})
SET(LIBRARY_ElaWidgetTools_BINDIR ${MODULE_ElaWidgetTools_DIR}/bin${PROJECT_BUILD_TYPE_POSTFIX})
FILE(GLOB LIBRARY_ElaWidgetTools_LIBS "${LIBRARY_ElaWidgetTools_LIBDIR}/*.lib")
FILE(GLOB LIBRARY_ElaWidgetTools_BINS "${LIBRARY_ElaWidgetTools_BINDIR}/*.dll")
IF(NOT LIBRARY_ElaWidgetTools_BINS)
MESSAGE(SEND_ERROR "Please specified bin directory!~ LIBRARY_ElaWidgetTools_BINS=${LIBRARY_ElaWidgetTools_BINS}")
ENDIF()
# QCustomPlot
SET(LIBRARY_QCustomPlot_INCLUDE ${MODULE_QCustomPlot_DIR}/include)
SET(LIBRARY_QCustomPlot_LIBDIR ${MODULE_QCustomPlot_DIR}/lib${PROJECT_BUILD_TYPE_POSTFIX})
SET(LIBRARY_QCustomPlot_BINDIR ${MODULE_QCustomPlot_DIR}/bin${PROJECT_BUILD_TYPE_POSTFIX})
FILE(GLOB LIBRARY_QCustomPlot_LIBS "${LIBRARY_QCustomPlot_LIBDIR}/*.lib")
FILE(GLOB LIBRARY_QCustomPlot_BINS "${LIBRARY_QCustomPlot_BINDIR}/*.dll")
IF(NOT LIBRARY_QCustomPlot_BINS)
MESSAGE(SEND_ERROR "Please specified bin directory!~ LIBRARY_QCustomPlot_BINS=${LIBRARY_QCustomPlot_BINS}")
ENDIF()
ENDIF()
set(outputDir_EXE ${PROJECT_SOURCE_DIR}/output/bin${PROJECT_BUILD_TYPE_POSTFIX})
# 复制第三方依赖库文件
MESSAGE(STATUS "Start copying third-party dependent library files.")
FILE(COPY ${LIBRARY_VTK_BINS}
DESTINATION ${outputDir_EXE})
# 复制qt插件文件
MESSAGE(STATUS "Start copying qt plugins files.")
FILE(COPY ${Qt5_DIR}/../../../plugins/platforms
${Qt5_DIR}/../../../plugins/imageformats
${Qt5_DIR}/../../../plugins/platformthemes
${Qt5_DIR}/../../../plugins/styles
#${Qt5_DIR}/../../../plugins/audio
DESTINATION ${outputDir_EXE}/plugins)
# 复制qwebengine翻译文件
#MESSAGE(STATUS "Start copying qwebengine translations files.")
#FILE(COPY ${Qt5_DIR}/../../../translations/qtwebengine_locales/zh-CN.pak
# ${Qt5_DIR}/../../../translations/qtwebengine_locales/en-US.pak
# DESTINATION ${outputDir_EXE}/translations/qtwebengine_locales)
# 复制qt库文件
MESSAGE(STATUS "Start copying resource files and QT library files.")
FILE(COPY ${Qt5_DIR}/../../../bin/Qt5Core${PROJECT_BUILD_TYPE_POSTFIX}.dll
${Qt5_DIR}/../../../bin/Qt5Gui${PROJECT_BUILD_TYPE_POSTFIX}.dll
${Qt5_DIR}/../../../bin/Qt5Widgets${PROJECT_BUILD_TYPE_POSTFIX}.dll
${Qt5_DIR}/../../../bin/Qt5Xml${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5Network${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5WebChannel${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5Quick${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5Qml${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5WebEngineCore${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5WebEngineWidgets${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5WebView${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5QuickWidgets${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5QmlModels${PROJECT_BUILD_TYPE_POSTFIX}.dll
${Qt5_DIR}/../../../bin/Qt5PrintSupport${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5Positioning${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/Qt5Multimedia${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../bin/QtWebEngineProcess${PROJECT_BUILD_TYPE_POSTFIX}.exe
${Qt5_DIR}/../../../bin/libEGL${PROJECT_BUILD_TYPE_POSTFIX}.dll
${Qt5_DIR}/../../../bin/libGLESv2${PROJECT_BUILD_TYPE_POSTFIX}.dll
#${Qt5_DIR}/../../../resources
DESTINATION ${outputDir_EXE})
#SET(POST_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/output)
ADD_SUBDIRECTORY(ComacMainProgram)
ADD_SUBDIRECTORY(PostProcessing)
ADD_SUBDIRECTORY(GenerateReport)