LAMPCAE/src/CMakeLists.txt

131 lines
6.4 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

set(SOVERSION ${PROJECT_VERSION} ${PROJECT_VERSION_MAJOR} ${PROJECT_VERSION_MINOR} ${PROJECT_VERSION_PATCH})
#-----------------------------------------------------------------------------
# 所有项目
#-----------------------------------------------------------------------------
list(APPEND _libraries BaseCppLibrary Common PythonModule SARibbonBar Settings DataProperty MeshData SelfDefObject Material Geometry BCBase ConfigOptions ParaClassFactory ModelData ModuleBase PostAlgorithm PostRenderData PostInterface PostCurveDataManager PostPlotWidget PostWidgets GeometryDataExchange ProjectTree ProjectTreeExtend GeometryCommand GeometryWidgets PluginManager GmshModule IO SolverControl MainWidgets UserGuidence)
list(APPEND _libraries PointCloudOperator)
list(APPEND _libraries json qcustomplot qhexedit qscintilla2 )
#[[if(_WIN_)
list(APPEND _libraries XGenerateReport License)
endif()]]
list(APPEND _libraries MainWindow ${PROJECT_NAME})
#-----------------------------------------------------------------------------
# 处理LAMPCAE程序的RPATH
#-----------------------------------------------------------------------------
file(RELATIVE_PATH _rel ${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR} ${CMAKE_INSTALL_PREFIX})
if(_APPLE_)
set(_rpath "@loader_path/${_rel}")
else()
set(_rpath "\$ORIGIN:\$ORIGIN/${_rel}")
endif()
file(TO_NATIVE_PATH "${_rpath}/${INSTALL_LIBDIR}" _lib_rpath)
# 遗漏两个,临时解决方案
list(APPEND LAMPCAE_Runtimes_Libraries VTK::loguru VTK::gl2ps Qt5::DBus VTK::IOChemistry )
list(APPEND LAMPCAE_Runtimes_Libraries Qt5::Qml Qt5::Network )
list(APPEND LAMPCAE_Runtimes_Libraries
OpenCASCADE::TKOpenGl OpenCASCADE::TKOffset OpenCASCADE::TKSTL OpenCASCADE::Freetype OpenCASCADE::TKBO OpenCASCADE::TKBRep OpenCASCADE::TKBool OpenCASCADE::TKCAF OpenCASCADE::TKCDF OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKHLR OpenCASCADE::TKIGES OpenCASCADE::TKLCAF OpenCASCADE::TKMath OpenCASCADE::TKMesh OpenCASCADE::TKPrim OpenCASCADE::TKSTEP OpenCASCADE::TKSTEP209 OpenCASCADE::TKSTEPAttr OpenCASCADE::TKSTEPBase OpenCASCADE::TKService OpenCASCADE::TKShHealing OpenCASCADE::TKTopAlgo OpenCASCADE::TKV3d OpenCASCADE::TKVCAF OpenCASCADE::TKXCAF OpenCASCADE::TKXDEIGES OpenCASCADE::TKXSBase OpenCASCADE::TKernel Qt5::Widgets Qt5::Xml VTK::CommonColor VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersSources VTK::FiltersStatistics VTK::IOCore VTK::IOLegacy VTK::IOXML VTK::IOXMLParser VTK::ImagingCore VTK::ImagingFourier VTK::ImagingMath VTK::InteractionStyle VTK::ParallelCore VTK::ParallelDIY VTK::RenderingCore VTK::RenderingFreeType VTK::RenderingOpenGL2 VTK::RenderingUI VTK::RenderingVolume VTK::RenderingVolumeOpenGL2 VTK::doubleconversion VTK::expat VTK::freetype VTK::glew VTK::lz4 VTK::lzma VTK::sys VTK::zlib VTK::IOGeometry
VTK::CommonColor VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersSources VTK::FiltersStatistics VTK::IOCore VTK::IOLegacy VTK::IOXML VTK::IOXMLParser VTK::ImagingCore VTK::ImagingFourier VTK::ImagingMath VTK::InteractionStyle VTK::ParallelCore VTK::ParallelDIY VTK::RenderingCore VTK::RenderingFreeType VTK::RenderingOpenGL2 VTK::RenderingUI VTK::RenderingVolume VTK::RenderingVolumeOpenGL2 VTK::doubleconversion VTK::expat VTK::freetype VTK::glew VTK::lz4 VTK::lzma VTK::sys VTK::zlib VTK::IOGeometry
${OpenCV_LIBRARIES}
OpenMeshCore OpenMeshTools
)
foreach(_library ${_libraries})
add_subdirectory(${_library})
set_target_properties(${_library}
PROPERTIES
MACOSX_RPATH ON
SKIP_BUILD_RPATH OFF
BUILD_WITH_INSTALL_RPATH ON
INSTALL_RPATH "${_lib_rpath}"
INSTALL_RPATH_USE_LINK_PATH ON
#POSITION_INDEPENDENT_CODE 1
#OUTPUT_NAME $<LOWER_CASE:${_library}>
#DEBUG_POSTFIX "_d"
VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER Modules
)
list(APPEND LAMPCAE_Runtimes_Libraries ${LAMPCAE_${_library}_Runtimes_Libraries})
endforeach()
#-----------------------------------------------------------------------------
# 测试代码
#-----------------------------------------------------------------------------
list(APPEND _TestPlugins PointMeshAlgorithm)
foreach(_TestPlugin ${_TestPlugins})
list(APPEND LAMPCAE_TEST_Libraries ${LAMPCAE_${_TestPlugin}_Runtimes_Libraries})
add_subdirectory(${_TestPlugin})
set_target_properties(${_TestPlugin} PROPERTIES
MACOSX_RPATH ON
SKIP_BUILD_RPATH OFF
BUILD_WITH_INSTALL_RPATH ON
INSTALL_RPATH "${_lib_rpath}"
INSTALL_RPATH_USE_LINK_PATH ON
#POSITION_INDEPENDENT_CODE 1
#OUTPUT_NAME $<LOWER_CASE:${_library}>
#DEBUG_POSTFIX "_d"
VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR}
FOLDER Modules
)
endforeach()
#-----------------------------------------------------------------------------
# 安装LAMPCAE定义项目的安装目录
#-----------------------------------------------------------------------------
install(
TARGETS ${_libraries} ${PROJECT_NAME}
#ARCHIVE DESTINATION ${INSTALL_LIBDIR} COMPONENT lib
RUNTIME DESTINATION ${INSTALL_BINDIR} COMPONENT bin
LIBRARY DESTINATION ${INSTALL_LIBDIR} COMPONENT lib
)
list(APPEND _plugins PluginCustomizer PluginMeshDataExchange PluginWBFZExchangePlugin PluginMotorBike PluginRasterTool )
foreach(_plugin ${_plugins})
list(APPEND LAMPCAE_Runtimes_Libraries ${LAMPCAE_${_plugin}_Runtimes_Libraries})
add_subdirectory(${_plugin})
set_target_properties(${_plugin} PROPERTIES
FOLDER Plugins
)
endforeach()
#-----------------------------------------------------------------------------
# 安装插件到plugins目录
#-----------------------------------------------------------------------------
install(
TARGETS ${_plugins}
RUNTIME DESTINATION ${INSTALL_BINDIR}/plugins
LIBRARY DESTINATION ${INSTALL_BINDIR}/plugins
)
list(REMOVE_DUPLICATES LAMPCAE_Runtimes_Libraries)
install(IMPORTED_RUNTIME_ARTIFACTS
${LAMPCAE_Runtimes_Libraries}
DESTINATION ${INSTALL_LIBDIR}
COMPONENT lib
)
#-----------------------------------------------------------------------------
# 配置所有编译
#-----------------------------------------------------------------------------
add_subdirectory(ALLBUILD)