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("$<$:/utf-8>") add_compile_options("$<$:/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()