COMPASSi/trunk/code/projects/InlandModel/CMakeLists.txt

178 lines
6.0 KiB
CMake
Raw Normal View History

2025-06-25 15:06:42 +08:00
cmake_minimum_required(VERSION 3.5)
project(InlandModel)
# 符号导出
add_definitions(-DINLAND_LIB)
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)
# 设置编译选项Linux 不需要 /MP
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
endif()
if(WIN32)
set(CMAKE_DEBUG_POSTFIX "d")
else()
set(CMAKE_DEBUG_POSTFIX "d")
endif()
# 使用 UTF-8 编码
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
find_package(Qt5 COMPONENTS Core Widgets WebChannel WebEngineWidgets Svg Sql Xml REQUIRED)
set(PROJECTS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../..")
include_directories(${PROJECTS_PATH}/inc/)
include_directories(${PROJECTS_PATH}/inc/OCC/OCCLib/)
include_directories(${PROJECTS_PATH}/inc/OCC/OCCModeling/)
include_directories(${PROJECTS_PATH}/inc/OCC/OCCModeling/CXml)
include_directories(${PROJECTS_PATH}/inc/DataManager/DataManagerInterface/include)
include_directories(${PROJECTS_PATH}/inc/DataManager/Infrastructure.Interface)
include_directories(${PROJECTS_PATH}/inc/DataManager/Infrastructure.Data)
include_directories(${PROJECTS_PATH}/inc/DataManager/Logic/Logic.DataManagement/Interpreters)
include_directories(${PROJECTS_PATH}/inc/DataManager/Logic/Logic.DataManagement/Utility)
include_directories(${PROJECTS_PATH}/inc/InlandModel)
include_directories(${PROJECTS_PATH}/inc/InlandModel/StabilityModelInterface)
include_directories(${PROJECTS_PATH}/inc/InlandModel/StructureModelInterface)
include_directories(${PROJECTS_PATH}/inc/InlandModel/CertiModelInterface)
include_directories(${PROJECTS_PATH}/3rd/pugixml-1.15/src)
include_directories(${PROJECTS_PATH}/inc/Util/include)
include_directories(${PROJECTS_PATH}/inc/Common)
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_InlandModel ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB head_InlandModel ${PROJECTS_PATH}/inc/InlandModel/*.h)
source_group("InlandModel\\Source" FILES ${srcs_InlandModel})
source_group("InlandModel\\Headers" FILES ${head_InlandModel})
file(GLOB srcs_StabilityModelInterface ${CMAKE_CURRENT_SOURCE_DIR}/StabilityModelInterface/*.cpp)
file(GLOB head_StabilityModelInterface ${PROJECTS_PATH}/inc/InlandModel/StabilityModelInterface/*.h)
source_group("StabilityModelInterface\\Source" FILES ${srcs_StabilityModelInterface})
source_group("StabilityModelInterface\\Headers" FILES ${head_StabilityModelInterface})
file(GLOB srcs_StructureModelInterface ${CMAKE_CURRENT_SOURCE_DIR}/StructureModelInterface/*.cpp)
file(GLOB head_StructureModelInterface ${PROJECTS_PATH}/inc/InlandModel/StructureModelInterface/*.h)
source_group("StructureModelInterface\\Source" FILES ${srcs_StructureModelInterface})
source_group("StructureModelInterface\\Headers" FILES ${head_StructureModelInterface})
file(GLOB srcs_CertiModelInterface ${CMAKE_CURRENT_SOURCE_DIR}/CertiModelInterface/*.cpp)
file(GLOB head_CertiModelInterface ${PROJECTS_PATH}/inc/InlandModel/CertiModelInterface/*.h)
source_group("CertiModelInterface\\Source" FILES ${srcs_CertiModelInterface})
source_group("CertiModelInterface\\Headers" FILES ${head_CertiModelInterface})
add_library(${PROJECT_NAME} SHARED ${srcs_InlandModel} ${head_InlandModel}
${srcs_StabilityModelInterface} ${head_StabilityModelInterface}
${srcs_StructureModelInterface} ${head_StructureModelInterface}
${srcs_CertiModelInterface} ${head_CertiModelInterface}
)
target_include_directories(InlandModel PRIVATE ${CMAKE_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}/arm_linux_bin/${CMAKE_BUILD_TYPE}/lib
)
endif()
target_link_libraries(${PROJECT_NAME} PUBLIC
Qt5::Widgets
Qt5::Core
Qt5::Svg
Qt5::WebChannel
Qt5::WebEngineWidgets
Qt5::Xml
Qt5::Sql
DataManager
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
pugixml
xerces-c
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
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 pugixmld)
target_link_libraries(${PROJECT_NAME} PUBLIC spdlogd)
target_link_libraries(${PROJECT_NAME} PUBLIC xlntd)
else()
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 pugixml)
target_link_libraries(${PROJECT_NAME} PUBLIC spdlog)
target_link_libraries(${PROJECT_NAME} PUBLIC xlnt)
endif()