308 lines
10 KiB
CMake
308 lines
10 KiB
CMake
|
cmake_minimum_required(VERSION 3.5) # CMake install : https://cmake.org/download/
|
||
|
project(COMPASSi)
|
||
|
|
||
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||
|
set(CMAKE_AUTOUIC ON)
|
||
|
set(CMAKE_AUTOMOC ON)
|
||
|
set(CMAKE_AUTORCC ON)
|
||
|
set(CMAKE_CXX_STANDARD 17)
|
||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
IF(MSVC)
|
||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
|
||
|
#SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
|
||
|
ENDIF(MSVC)
|
||
|
|
||
|
if(WIN32)
|
||
|
add_definitions(-DCOMPASS_WINDOWS)
|
||
|
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
|
||
|
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
|
||
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||
|
|
||
|
# 设置输出目录
|
||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
|
||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
|
||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/bin")
|
||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||
|
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug)
|
||
|
set(LOGOICO "${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug/logo.rc")
|
||
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||
|
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/bin/Release)
|
||
|
set(LOGOICO "${CMAKE_CURRENT_SOURCE_DIR}/bin/Release/logo.rc")
|
||
|
endif()
|
||
|
else()
|
||
|
|
||
|
if(NOT CMAKE_BUILD_TYPE)
|
||
|
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
|
||
|
endif()
|
||
|
|
||
|
add_definitions(-DCOMPASS_UNIX)
|
||
|
add_compile_options(-fPIC)
|
||
|
add_compile_options(-fpermissive)
|
||
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||
|
|
||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|aarch64")
|
||
|
message(STATUS "Detected ARM architecture.")
|
||
|
#set(Qt5_DIR "/home/xt/DP/INTESIM_compileThirdParty/qt-everywhere-opensource-src-5.15.4/qt-everywhere-src-5.15.4/_install/lib/cmake/Qt5")
|
||
|
set(Qt5_DIR "/opt/Qt5.15.4/lib/cmake/Qt5")
|
||
|
#add_compile_options(-fpack-struct=8) # 设置结构体的对齐
|
||
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpack-struct=8")
|
||
|
|
||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_bin/${CMAKE_BUILD_TYPE}/lib")
|
||
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_bin/${CMAKE_BUILD_TYPE}/lib")
|
||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_bin/${CMAKE_BUILD_TYPE}")
|
||
|
|
||
|
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_bin/${CMAKE_BUILD_TYPE}/lib)
|
||
|
set(LOGOICO "${CMAKE_CURRENT_SOURCE_DIR}/arm_linux_bin/${CMAKE_BUILD_TYPE}/logo.rc")
|
||
|
|
||
|
else()
|
||
|
message(STATUS "Detected non-ARM architecture.")
|
||
|
set(CMAKE_PREFIX_PATH "/opt/Qt/5.15.2/gcc_64") # 替换为您的 Qt 安装路径
|
||
|
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/linux_bin)
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
find_package(Qt5 REQUIRED COMPONENTS Core Svg Gui Widgets WebChannel WebEngineWidgets Sql Xml) # Qt COMPONENTS
|
||
|
if(Qt5_FOUND)
|
||
|
message(STATUS "Qt5 found.")
|
||
|
else()
|
||
|
message(FATAL_ERROR "Qt5 not found.")
|
||
|
endif()
|
||
|
|
||
|
set(PROJECTS_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
||
|
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/pugixml-1.15/src)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/Application)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd)
|
||
|
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/Common)
|
||
|
#include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/CCSReport/include)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rd/CCSReport_2/include)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/DataManager/DataManagerInterface/include)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/DataManager/Infrastructure.Interface/Arithmetics)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/DataManager/Infrastructure.Data)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/DataManager/Logic/Logic.DataManagement/Interpreters)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/DataManager/Logic/Logic.DataManagement/Utility)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/InlandModel)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/InlandModel/StabilityModelInterface)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/InlandModel/StructureModelInterface)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/InlandModel/CertiModelInterface)
|
||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc/Util/include)
|
||
|
include_directories(${PROJECTS_PATH}/inc/OCC/OCCLib/)
|
||
|
include_directories(${PROJECTS_PATH}/inc/OCC/OCCModeling/)
|
||
|
include_directories(${PROJECTS_PATH}/inc/)
|
||
|
include_directories(${PROJECTS_PATH}/inc/ReadDXF)
|
||
|
include_directories(${PROJECTS_PATH}/inc/DataManager/XmlSerialization)
|
||
|
include_directories(${PROJECTS_PATH}/inc/DataManager/XSDHeader)
|
||
|
|
||
|
|
||
|
|
||
|
if(WIN32)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/occ/win64/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/spdlog/win64/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/xerces-c/win64/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/xlnt/win64/include)
|
||
|
else()
|
||
|
include_directories(${PROJECTS_PATH}/3rd/occ/arm_linux/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/spdlog/arm_linux/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/xerces-c/arm_linux/include)
|
||
|
include_directories(${PROJECTS_PATH}/3rd/xlnt/arm_linux/include)
|
||
|
endif()
|
||
|
|
||
|
|
||
|
file(GLOB srcs_application "${CMAKE_CURRENT_SOURCE_DIR}/projects/Application/*.cpp")
|
||
|
file(GLOB hdrs_application "${CMAKE_CURRENT_SOURCE_DIR}/inc/Application/*.h")
|
||
|
|
||
|
source_group("Application\\Source" FILES ${srcs_application})
|
||
|
source_group("Application\\Headers" FILES ${hdrs_application})
|
||
|
|
||
|
file(GLOB srcs_Common "${CMAKE_CURRENT_SOURCE_DIR}/inc/Common/*.h")
|
||
|
source_group("Common" FILES ${srcs_Common})
|
||
|
|
||
|
if(WIN32)
|
||
|
link_directories(${PROJECTS_PATH}/bin/${CMAKE_BUILD_TYPE})
|
||
|
else()
|
||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|aarch64")
|
||
|
elseif (DEFINED ENV{CMAKE_VS_CODE})
|
||
|
link_directories(${PROJECTS_PATH}/build/debug)
|
||
|
else()
|
||
|
link_directories(${PROJECTS_PATH}/linux_bin/debug)
|
||
|
endif()
|
||
|
else()
|
||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|aarch64")
|
||
|
elseif (DEFINED ENV{CMAKE_VS_CODE})
|
||
|
link_directories(${PROJECTS_PATH}/build/release)
|
||
|
else()
|
||
|
link_directories(${PROJECTS_PATH}/linux_bin/release)
|
||
|
endif()
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/3rd/pugixml-1.15)
|
||
|
#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/3rd/CCSReport)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/3rd/CCSReport_2)
|
||
|
#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/XmlSerialization)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/Util)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/DataManager)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/InlandModel)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/OCC)
|
||
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/ReadDXF)
|
||
|
|
||
|
add_executable(${PROJECT_NAME}
|
||
|
${srcs_application}
|
||
|
${hdrs_application}
|
||
|
${srcs_Common}
|
||
|
${LOGOICO}
|
||
|
)
|
||
|
|
||
|
# 添加日志头文件
|
||
|
target_include_directories(COMPASSi PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/3rd/spdlog)
|
||
|
|
||
|
|
||
|
|
||
|
# 添加库文件搜索路径
|
||
|
if(WIN32)
|
||
|
target_link_directories(${PROJECT_NAME} PRIVATE
|
||
|
${PROJECTS_PATH}/3rd/occ/win64/lib64
|
||
|
${PROJECTS_PATH}/3rd/spdlog/win64/lib
|
||
|
${PROJECTS_PATH}/3rd/xerces-c/win64/lib
|
||
|
${PROJECTS_PATH}/3rd/xlnt/win64/lib
|
||
|
${PROJECTS_PATH}/bin/${CMAKE_BUILD_TYPE}
|
||
|
)
|
||
|
else()
|
||
|
target_link_directories(${PROJECT_NAME} PRIVATE
|
||
|
${PROJECTS_PATH}/3rd/occ/arm_linux/lib
|
||
|
${PROJECTS_PATH}/3rd/spdlog/arm_linux/lib
|
||
|
${PROJECTS_PATH}/3rd/xerces-c/arm_linux/lib
|
||
|
${PROJECTS_PATH}/3rd/xlnt/arm_linux/lib
|
||
|
${PROJECTS_PATH}/bin/${CMAKE_BUILD_TYPE}/lib
|
||
|
)
|
||
|
endif()
|
||
|
if(WIN32)
|
||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||
|
Qt5::Widgets
|
||
|
Qt5::Core
|
||
|
Qt5::Gui
|
||
|
Qt5::WebChannel
|
||
|
Qt5::WebEngineWidgets
|
||
|
Qt5::Xml
|
||
|
Qt5::Sql
|
||
|
TKVRML
|
||
|
TKSTL
|
||
|
TKBRep
|
||
|
TKIGES
|
||
|
TKShHealing
|
||
|
TKSTEP
|
||
|
TKXSBase
|
||
|
TKernel
|
||
|
TKBool
|
||
|
TKCDF
|
||
|
TKDraw
|
||
|
TKFeat
|
||
|
TKFillet
|
||
|
TKG2d
|
||
|
TKG3d
|
||
|
TKGeomAlgo
|
||
|
TKGeomBase
|
||
|
TKHLR
|
||
|
TKMath
|
||
|
TKOffset
|
||
|
TKPrim
|
||
|
TKService
|
||
|
TKTopAlgo
|
||
|
TKV3d
|
||
|
TKBO
|
||
|
TKMesh
|
||
|
#TKOpenGl
|
||
|
ReadDXF
|
||
|
OCCModeling
|
||
|
xerces-c
|
||
|
) # Qt5 Shared Library
|
||
|
else()
|
||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||
|
Qt5::Widgets
|
||
|
Qt5::Core
|
||
|
Qt5::Gui
|
||
|
Qt5::WebChannel
|
||
|
Qt5::WebEngineWidgets
|
||
|
Qt5::Xml
|
||
|
Qt5::Sql
|
||
|
TKVRML
|
||
|
TKSTL
|
||
|
TKBRep
|
||
|
TKIGES
|
||
|
TKShHealing
|
||
|
TKSTEP
|
||
|
TKXSBase
|
||
|
TKernel
|
||
|
TKBool
|
||
|
TKCDF
|
||
|
TKDraw
|
||
|
TKFeat
|
||
|
TKFillet
|
||
|
TKG2d
|
||
|
TKG3d
|
||
|
TKGeomAlgo
|
||
|
TKGeomBase
|
||
|
TKHLR
|
||
|
TKMath
|
||
|
TKOffset
|
||
|
TKPrim
|
||
|
TKService
|
||
|
TKTopAlgo
|
||
|
TKV3d
|
||
|
TKBO
|
||
|
TKMesh
|
||
|
#TKOpenGl
|
||
|
ReadDXF
|
||
|
OCCModeling
|
||
|
pthread
|
||
|
xerces-c
|
||
|
) # Qt5 Shared Library
|
||
|
endif()
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
# 在主目标前显式声明子项目依赖关系
|
||
|
|
||
|
add_dependencies(DataManager Util)
|
||
|
add_dependencies(InlandModel DataManager)
|
||
|
#add_dependencies(${PROJECT_NAME} CCSReport InlandModel)
|
||
|
add_dependencies(${PROJECT_NAME} CCSReport_2 InlandModel)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC InlandModeld)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC DataManagerd)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC OCCModelingd)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Utild)
|
||
|
#target_link_libraries(${PROJECT_NAME} PUBLIC CCSReportd)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC CCSReport_2d)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC pugixmld)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC spdlogd)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC xlntd)
|
||
|
|
||
|
|
||
|
else()
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC InlandModel)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC DataManager)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC OCCModeling)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC Util)
|
||
|
#target_link_libraries(${PROJECT_NAME} PUBLIC CCSReport)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC CCSReport_2)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC pugixml)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC spdlog)
|
||
|
target_link_libraries(${PROJECT_NAME} PUBLIC xlnt)
|
||
|
endif()
|
||
|
|
||
|
set(OUT_PROJECT_NAME ${PROJECT_NAME})
|
||
|
#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/projects/cpack)
|
||
|
|
||
|
|
||
|
|