commit 1ef051c6500d224a741dcbab61aee7847bfbf3c0 Author: 禅元天道 Date: Mon May 8 14:32:41 2023 +0800 同步内网代码 diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..55de366 --- /dev/null +++ b/.clang-format @@ -0,0 +1,178 @@ +# +# clang-format configuration file. Intended for clang-format >= 4. +# +# For more information, see: +# +# https://clang.llvm.org/docs/ClangFormat.html +# https://clang.llvm.org/docs/ClangFormatStyleOptions.html +# +# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto +Language: Cpp +BasedOnStyle: Google +# 访问说明符(public、private等)的偏移 +AccessModifierOffset: -4 +# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行) +AlignAfterOpenBracket: Align +# 连续赋值时,对齐所有等号 +AlignConsecutiveAssignments: AcrossEmptyLinesAndComments +# 连续声明时,对齐所有声明的变量名 +AlignConsecutiveDeclarations: AcrossEmptyLinesAndComments +# 水平对齐二元和三元表达式的操作数 +AlignOperands: AlignAfterOperator +# 对齐连续的尾随的注释 +AlignTrailingComments: true +# 允许函数声明的所有参数在放在下一行 +AllowAllParametersOfDeclarationOnNextLine: false +# 允许短的块放在同一行 +AllowShortBlocksOnASingleLine: Never +# 允许短的case标签放在同一行 +AllowShortCaseLabelsOnASingleLine: false +# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All +AllowShortFunctionsOnASingleLine: Empty +# 允许短的if语句保持在同一行 +AllowShortIfStatementsOnASingleLine: false +# 允许短的循环保持在同一行 +AllowShortLoopsOnASingleLine: false +# 总是在定义返回类型后换行(deprecated) +AlwaysBreakAfterDefinitionReturnType: None +# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数), +# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义) +AlwaysBreakAfterReturnType: None +# 总是在多行string字面量前换行 +AlwaysBreakBeforeMultilineStrings: false +# 总是在template声明后换行 +AlwaysBreakTemplateDeclarations: Yes +# false表示函数实参要么都在同一行,要么都各自一行 +BinPackArguments: true +# false表示所有形参要么都在同一行,要么都各自一行 +BinPackParameters: true +# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效 +BraceWrapping: + # class定义后面 + AfterClass: false + # 控制语句后面 + AfterControlStatement: Never + # enum定义后面 + AfterEnum: false + # 函数定义后面 + AfterFunction: true + # 命名空间定义后面 + AfterNamespace: false + # ObjC定义后面 + AfterObjCDeclaration: false + # struct定义后面 + AfterStruct: false + # union定义后面 + AfterUnion: false + # catch之前 + BeforeCatch: false + # else之前 + BeforeElse: false + # 缩进大括号 + IndentBraces: false +# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行) +BreakBeforeBinaryOperators: NonAssignment +# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似), +# Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似), +# Allman(总是在大括号前换行), GNU(总是在大括号前换行,并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom +# 注:这里认为语句块也属于函数 +BreakBeforeBraces: Custom +# 在三元运算符前换行 +BreakBeforeTernaryOperators: true +# 在构造函数的初始化列表的逗号前换行 +BreakConstructorInitializersBeforeComma: true +# 每行字符的限制,0表示没有限制 +ColumnLimit: 100 +# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变 +CommentPragmas: '^ IWYU pragma:' +# 构造函数的初始化列表要么都在同一行,要么都各自一行 +ConstructorInitializerAllOnOneLineOrOnePerLine: false +# 构造函数的初始化列表的缩进宽度 +ConstructorInitializerIndentWidth: 4 +# 延续的行的缩进宽度 +ContinuationIndentWidth: 4 +# 去除C++11的列表初始化的大括号{后和}前的空格 +Cpp11BracedListStyle: false +# 继承最常用的指针和引用的对齐方式 +DerivePointerAlignment: false +# 关闭格式化 +DisableFormat: false +# 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental) +ExperimentalAutoDetectBinPacking: false +# 需要被解读为foreach循环而不是函数调用的宏 +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +# 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前), +# 可以定义负数优先级从而保证某些#include永远在最前面 +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +# 缩进case标签 +IndentCaseLabels: true +# 缩进宽度 +IndentWidth: 4 +# 函数返回类型换行时,缩进函数声明或函数定义的函数名 +IndentWrappedFunctionNames: false +# 保留在块开始处的空行 +KeepEmptyLinesAtTheStartOfBlocks: false +# 开始一个块的宏的正则表达式 +MacroBlockBegin: '' +# 结束一个块的宏的正则表达式 +MacroBlockEnd: '' +# 连续空行的最大数量 +MaxEmptyLinesToKeep: 1 +# 命名空间的缩进: None, Inner(缩进嵌套的命名空间中的内容), All +NamespaceIndentation: All +# 使用ObjC块时缩进宽度 +ObjCBlockIndentWidth: 4 +# 在ObjC的@property后添加一个空格 +ObjCSpaceAfterProperty: false +# 在ObjC的protocol列表前添加一个空格 +ObjCSpaceBeforeProtocolList: true +# 在call(后对函数调用换行的penalty +PenaltyBreakBeforeFirstCallParameter: 19 +# 在一个注释中引入换行的penalty +PenaltyBreakComment: 300 +# 第一次在<<前换行的penalty +PenaltyBreakFirstLessLess: 120 +# 在一个字符串字面量中引入换行的penalty +PenaltyBreakString: 1000 +# 对于每个在行字符数限制之外的字符的penalty +PenaltyExcessCharacter: 1000000 +# 将函数的返回类型放到它自己的行的penalty +PenaltyReturnTypeOnItsOwnLine: 60 +# 指针和引用的对齐: Left, Right, Middle +PointerAlignment: Left +# 允许重新排版注释 +ReflowComments: true +# 允许排序#include +SortIncludes: CaseInsensitive +# 在C风格类型转换后添加空格 +SpaceAfterCStyleCast: false +# 在赋值运算符之前添加空格 +SpaceBeforeAssignmentOperators: true +# 开圆括号之前添加一个空格: Never, ControlStatements, Always +SpaceBeforeParens: Never +# 在空的圆括号中添加空格 +SpaceInEmptyParentheses: false +# 在尾随的评论前添加的空格数(只适用于//) +SpacesBeforeTrailingComments: 1 +# 在尖括号的<后和>前添加空格 +SpacesInAngles: false +# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格 +SpacesInContainerLiterals: false +# 在C风格类型转换的括号中添加空格 +SpacesInCStyleCastParentheses: false +# 在圆括号的(后和)前添加空格 +SpacesInParentheses: false +# 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响 +SpacesInSquareBrackets: false +# 标准: Cpp03, Cpp11, Auto +Standard: c++11 +# tab宽度 +TabWidth: 4 +# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always +UseTab: Always diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e385656 --- /dev/null +++ b/.gitignore @@ -0,0 +1,199 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +python37 +Build +Code/.vs + +output/* +Code/*/debug +Code/*/release +Code/*/Makefile* +Code/Makefile* +Code/PluginFluent/* +cgns/* +cgns00/* +*.vcxproj +*.vcxproj.filters +*.vcxproj.user +*.stash +*.bat +/Doxygen +/DoxyConfig +/*.nsi +/.vscode +/Code/*.user +/Code/*.sln +/build-FastCAE-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug +Code/FastCAE.pro.user.4f627ea +/src/Copy_Pys.bat +/src/Copy_Pys.sh +/src/Copy_SOs.sh +/src/Create_Linux64_Project.sh +/src/Create_X64_Project.bat +/src/FastCAE.pro +/src/hdf5.pri +/src/occ.pri +/src/python.pri +/src/qwt.pri +/src/Run_MSVC.bat +/src/tecio.pri +/src/Translate.bat +/src/vtk.pri +/src/cgns.pri +/src/Copy_DLLs.bat +/src/BCBase/BCBase.pro +/src/BCBase/_Create_Project.bat +/src/BCBase/_Create_project.sh +/src/BCBase/BCBase.pri +/src/ConfigOptions/ConfigOptions.pro +/src/ConfigOptions/_Create_Project.bat +/src/ConfigOptions/_Create_project.sh +/src/ConfigOptions/ConfigOptions.pri +/src/DataProperty/DataProperty.pro +/src/DataProperty/_Create_Project.bat +/src/DataProperty/_Create_project.sh +/src/DataProperty/DataProperty.pri +/src/geometry/geometry.pro +/src/geometry/_Create_Project.bat +/src/geometry/_Create_project.sh +/src/geometry/geometry.pri +/src/GeometryCommand/GeometryCommand.pro +/src/GeometryCommand/_Create_Project.bat +/src/GeometryCommand/_Create_project.sh +/src/GeometryCommand/GeometryCommand.pri +/src/GeometryDataExchange/GeometryDataExchange.pro +/src/GeometryDataExchange/_Create_Project.bat +/src/GeometryDataExchange/_Create_project.sh +/src/GeometryDataExchange/GeometryDataExchange.pri +/src/GeometryWidgets/GeometryWidgets.pri +/src/GeometryWidgets/GeometryWidgets.pro +/src/GeometryWidgets/_Create_project.sh +/src/GeometryWidgets/_Create_Project.bat +/src/GmshModule/GmshModule.pri +/src/GmshModule/GmshModule.pro +/src/GmshModule/_Create_Project.bat +/src/GmshModule/_Create_project.sh +/src/IO/IO.pri +/src/IO/IO.pro +/src/IO/_Create_Project.bat +/src/IO/_Create_project.sh +/src/License/License.pri +/src/License/License.pro +/src/License/_Create_Project.bat +/src/License/_Create_project.sh +/src/MainWidgets/MainWidgets.pri +/src/MainWidgets/MainWidgets.pro +/src/MainWidgets/_Create_Project.bat +/src/MainWidgets/_Create_project.sh +/src/mainWindow/mainWindow.pri +/src/mainWindow/mainWindow.pro +/src/mainWindow/_Create_Project.bat +/src/mainWindow/_Create_project.sh +/src/Material/Material.pri +/src/Material/Material.pro +/src/Material/_Create_Project.bat +/src/Material/_Create_project.sh +/src/meshData/meshData.pro +/src/meshData/_Create_Project.bat +/src/meshData/_Create_project.sh +/src/meshData/meshData.pri +/src/ModelData/ModelData.pri +/src/ModelData/ModelData.pro +/src/ModelData/_Create_Project.bat +/src/ModelData/_Create_project.sh +/src/moduleBase/moduleBase.pri +/src/moduleBase/moduleBase.pro +/src/moduleBase/_Create_Project.bat +/src/moduleBase/_Create_project.sh +/src/ParaClassFactory/ParaClassFactory.pro +/src/ParaClassFactory/_Create_Project.bat +/src/ParaClassFactory/_Create_project.sh +/src/ParaClassFactory/ParaClassFactory.pri +/src/PluginCustomizer/PluginCustomizer.pri +/src/PluginCustomizer/PluginCustomizer.pro +/src/PluginCustomizer/_Create_Project.bat +/src/PluginCustomizer/_Create_project.sh +/src/PluginManager/PluginManager.pri +/src/PluginManager/PluginManager.pro +/src/PluginManager/_Create_Project.bat +/src/PluginManager/_Create_project.sh +/src/PluginMeshDataExchange/PluginMeshDataExchange.pro +/src/PluginMeshDataExchange/_Create_Project.bat +/src/PluginMeshDataExchange/_Create_project.sh +/src/PluginMeshDataExchange/PluginMeshDataExchange.pri +/src/PostAlgorithm/PostAlgorithm.pri +/src/PostAlgorithm/PostAlgorithm.pro +/src/PostAlgorithm/_Create_Project.bat +/src/PostCurveDataManager/PostCurveDataManager.pri +/src/PostCurveDataManager/PostCurveDataManager.pro +/src/PostInterface/PostInterface.pri +/src/PostInterface/PostInterface.pro +/src/PostInterface/_Create_Project.bat +/src/PostPlotWidget/PostPlotWidget.pri +/src/PostPlotWidget/PostPlotWidget.pro +/src/PostRenderData/PostRenderData.pri +/src/PostRenderData/PostRenderData.pro +/src/PostRenderData/_Create_Project.bat +/src/PostWidgets/PostWidgets.pri +/src/PostWidgets/PostWidgets.pro +/src/PostWidgets/_Create_Project.bat +/src/PostWidgets/_Create_project.sh +/src/ProjectTree/ProjectTree.pri +/src/ProjectTree/ProjectTree.pro +/src/ProjectTree/_Create_Project.bat +/src/ProjectTree/_Create_project.sh +/src/ProjectTreeExtend/ProjectTreeExtend.pro +/src/ProjectTreeExtend/_Create_Project.bat +/src/ProjectTreeExtend/_Create_project.sh +/src/ProjectTreeExtend/ProjectTreeExtend.pri +/src/SARibbonBar/_Create_Project.bat +/src/SelfDefObject/SelfDefObject.pri +/src/SelfDefObject/SelfDefObject.pro +/src/SelfDefObject/_Create_Project.bat +/src/SelfDefObject/_Create_project.sh +/src/settings/settings.pro +/src/settings/_Create_Project.bat +/src/settings/_Create_project.sh +/src/settings/settings.pri +/src/SolverControl/SolverControl.pri +/src/SolverControl/SolverControl.pro +/src/SolverControl/_Create_Project.bat +/src/SolverControl/_Create_project.sh +/src/UserGuidence/UserGuidence.pro +/src/UserGuidence/_Create_Project.bat +/src/UserGuidence/_Create_project.sh +/src/UserGuidence/UserGuidence.pri +/src/XGenerateReport/XGenerateReport.pri +/src/XGenerateReport/XGenerateReport.pro +/src/XGenerateReport/_Create_Project.bat +/src/XGenerateReport/_Create_project.sh diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..91c104f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,321 @@ +#----------------------------------------------------------------------------- +# 工程属性设置 +#----------------------------------------------------------------------------- +# 指定所需cmake的最低版本 +cmake_minimum_required(VERSION 3.21 FATAL_ERROR) +# 设置项目名称 语言 +project(FastCAE + VERSION 2.5.0 + LANGUAGES CXX + DESCRIPTION "FastCAE,一款免费的CAE仿真软件研发支撑平台。" + HOMEPAGE_URL "http://www.fastcae.com/" +) + +#----------------------------------------------------------------------------- +# 编译系统设置 +#----------------------------------------------------------------------------- +# c++语言标准 +set(CMAKE_CXX_STANDARD 11) +# 指定是否使用编译器特定的扩展 +set(CMAKE_CXX_EXTENSIONS OFF) +# 是否强制要求C++标准为${CMAKE_CXX_STANDARD},如果为OFF则可能使用旧的标准 +set(CMAKE_CXX_STANDARD_REQUIRED ON) +# 默认编译动态库 +set(BUILD_SHARED_LIBS ON) + + +#----------------------------------------------------------------------------- +# 检测操作系统 +#----------------------------------------------------------------------------- +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(FASTCAE_LINUX True) + if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_NAME}" CACHE PATH "${PROJECT_NAME}的安装路径" FORCE) + endif() +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(FASTCAE_WIN True) + if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "c:/Program Files/${PROJECT_NAME}" CACHE PATH "${PROJECT_NAME}的安装路径" FORCE) + endif() +else() + message(SEND_ERROR "No Support System!") +endif() + +#----------------------------------------------------------------------------- +# 测试环境定义,发布的时候需要删除 +#----------------------------------------------------------------------------- +set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install") +message(STATUS "${PROJECT_NAME} will be installed to ${CMAKE_INSTALL_PREFIX}") + +if (NOT DEFINED Qt5_DIR) + if(FASTCAE_LINUX) + set(Qt5_DIR "/opt/Qt5.14.2/5.14.2/gcc_64/lib/cmake/Qt5" CACHE PATH "Qt5Config.cmake所在目录" FORCE) + elseif(FASTCAE_WIN) + set(Qt5_DIR "D:/software/Qt/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake/Qt5" CACHE PATH "Qt5Config.cmake所在目录" FORCE) + endif() +endif() + +#----------------------------------------------------------------------------- +# 编译选项设置 +#----------------------------------------------------------------------------- +# 是否需要编译调试程序 +option(FASTCAE_ENABLE_DEV "ON:开启代码调试,OFF:仅安装程序" ON) +# 是否自动下载依赖库 +option(FASTCAE_AUTO_DOWNLOAD "如果extlib不存在,则自动下载(git)依赖库" ON) +option(FASTCAE_ENABLE_OPENMP "使用OpenMP" OFF) +option(FASTCAE_ENABLE_MPI "使用MPI" OFF) +option(FASTCAE_DOXYGEN_DOC "生成Doxygen文档" OFF) +option(FASTCAE_INSTALLATION_PACKAGE "生成${PROJECT_NAME}安装包" ON) + +#----------------------------------------------------------------------------- +# 指定编译选项 +#----------------------------------------------------------------------------- +# 仅对单配制编译器(Makefile Generators or Ninja)生效 +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release") +endif() +if (POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif (POLICY CMP0091) +if(MSVC) + add_definitions(-DUNICODE -D_UNICODE) + add_compile_options("$<$:/utf-8>") + add_compile_options("$<$:/utf-8>") + add_compile_options( + $<$:/MD> + $<$:/MDd> + $<$:/MD> + ) +endif() + + +#----------------------------------------------------------------------------- +# 从系统查找OpenMP(动态库引入使用:OpenMP::OpenMP_CXX) +#----------------------------------------------------------------------------- +if(FASTCAE_ENABLE_OPENMP) + find_package(OpenMP) + if(OpenMP_CXX_FOUND) + add_definitions(-DFASTCAE_HAS_OPENMP) + endif() +endif() + +#----------------------------------------------------------------------------- +# 从系统查找MPI(头文件路径:${MPI_CXX_INCLUDE_DIRS} 动态库引入使用:MPI::MPI_CXX) +#----------------------------------------------------------------------------- +if(FASTCAE_ENABLE_MPI) + find_package(MPI) + if(MPI_CXX_FOUND) + add_definitions(-DFASTCAE_HAS_MPI) + endif() +endif() + +#----------------------------------------------------------------------------- +# 从系统查找Qt模块,开启Qt中间文件的自动生成 +#----------------------------------------------------------------------------- +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +list(APPEND QtNeededModules + Core + Widgets + Gui + Xml + Svg # Qwt + OpenGL # Qwt + PrintSupport # QwtPolar + DBus +) +if(FASTCAE_LINUX) + list(APPEND QtNeededModules XcbQpa) +endif() + +find_package(Qt5 COMPONENTS ${QtNeededModules} REQUIRED) +if(Qt5_FOUND) + message(STATUS "Found Qt5: ${Qt5_DIR}") + if(Qt5_POSITION_INDEPENDENT_CODE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + endif() +else() + set(Qt5_DIR "Qt5_DIR-NOTFOUND" CACHE PATH "Qt5_DIR") +endif() + +#----------------------------------------------------------------------------- +# 从远程检索依赖库 +#----------------------------------------------------------------------------- +if(FASTCAE_AUTO_DOWNLOAD AND NOT EXISTS ${CMAKE_SOURCE_DIR}/extlib) + if(FASTCAE_WIN) + set(_extlibGitAddr "https://gitee.com/DISOGitee/FastCAEWinExtlib.git") + elseif(FASTCAE_LINUX) + set(_extlibGitAddr "https://gitee.com/DISOGitee/FastCAELinuxExtlib.git") + endif() + + find_package(Git REQUIRED) + if(Git_FOUND) + execute_process( + COMMAND + ${GIT_EXECUTABLE} clone ${_extlibGitAddr} extlib + WORKING_DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR} + RESULT_VARIABLE _status + ) + else() + message(FATAL_ERROR "Not Found Git") + message(STATUS "Please execute the command[git clone ${_extlibGitAddr} extlib] under the directory ${CMAKE_SOURCE_DIR}") + endif() +endif() + +#----------------------------------------------------------------------------- +# 引入FastCAE的依赖库 +#----------------------------------------------------------------------------- +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +# VTK +find_package(VTK REQUIRED) + +# OpenCASCADE +find_package(OpenCASCADE REQUIRED) + +# Qwt +find_package(Qwt REQUIRED) + +# HDF5 +find_package(HDF5 REQUIRED) + +# CGNS +find_package(CGNS REQUIRED) + +# TecIO +find_package(TecIO REQUIRED) + +# QuaZIP +find_package(QuaZIP REQUIRED) + +# Gmsh +find_package(Gmsh REQUIRED) + +# Python +find_package(Python REQUIRED) + +#----------------------------------------------------------------------------- +# 检索系统python(需要修改cmake搜索路径) +#----------------------------------------------------------------------------- +#find_package(PythonInterp REQUIRED) +#find_package(Python COMPONENTS Interpreter Development REQUIRED) + + +#----------------------------------------------------------------------------- +# 开启项目分组 +#----------------------------------------------------------------------------- +set_property(GLOBAL PROPERTY USE_FOLDERS ON) +# 可以修改cmake预定义的target分组名称 +#set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "Predefined") + +#----------------------------------------------------------------------------- +# 定义GNU标准的安装目录(GNUInstallDirs.cmake) +#----------------------------------------------------------------------------- +include(GNUInstallDirs) +set(CMAKE_INSTALL_LIBDIR "lib") + +#----------------------------------------------------------------------------- +# 定义项目构建中间文件的生成目录 +#----------------------------------------------------------------------------- +if(FASTCAE_WIN) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Debug) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Release) + if(FASTCAE_ENABLE_DEV) + set(DEVRUNTIME_BINDIR_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}) + set(DEVRUNTIME_BINDIR_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}) + endif() +elseif(FASTCAE_LINUX) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) + if(FASTCAE_ENABLE_DEV) + set(DEVRUNTIME_BINDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + set(DEVRUNTIME_LIBDIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) + endif() +endif() + +#----------------------------------------------------------------------------- +# 定义变量作为项目的安装路径 +#----------------------------------------------------------------------------- +set(INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR}) +if(FASTCAE_WIN) + set(INSTALL_LIBDIR ${CMAKE_INSTALL_BINDIR}) +else() + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) +endif() +#set(INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}) + + +#----------------------------------------------------------------------------- +# 编译位置无关的代码 +#----------------------------------------------------------------------------- +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + +# 定义源码路径 +add_subdirectory(src) + +#----------------------------------------------------------------------------- +# 单元测试Ctest +#----------------------------------------------------------------------------- +option(FASTCAE_ENABLE_TEST "开启单元测试(尚未开发完成)" OFF) +if(FASTCAE_ENABLE_TEST) + # 开启测试 + enable_testing() + #添加测试项目 + add_subdirectory(test) +endif() + +#----------------------------------------------------------------------------- +# 生成文档(Doxygen + Breathe + Sphinx) +#----------------------------------------------------------------------------- +if(FASTCAE_DOXYGEN_DOC) + find_package(Doxygen REQUIRED) + if(DOXYGEN_FOUND) + message(STATUS "Found doc generate Tool: Doxygen") + include(UseDoxygen) + # 文档生成依赖Python解释器、Sphinx + #[[find_package(PythonInterp) + find_package(Sphinx) + + if(PYTHONINTERP_FOUND AND SPHINX_FOUND) + message(STATUS "Found doc generate Tool: Sphinx") + include(FindPythonModule) + # Python的breathe模块负责协调Doxygen和Sphinx + find_python_module(breathe REQUIRED) + if(breathe_FOUND) + message(STATUS "Python module(breathe) version: ${breathe_VERSION}") + include(UseSphinx) + else() + message(STATUS "Generate sphinx documentation need python module: breathe") + endif() + + endif()]] + endif() + +endif() + +#----------------------------------------------------------------------------- +# 安装包生成(windows环境光需要NSIS 3.03+) +#----------------------------------------------------------------------------- +if(FASTCAE_INSTALLATION_PACKAGE) + if (FASTCAE_WIN) + find_program(NSIS_EXECUTABLE NSIS.exe) + # WIX尚未调试,暂时取消 + #find_program(WIX_EXECUTABLE candle.exe) + #if(NSIS_EXECUTABLE OR WIX_EXECUTABLE) + if(NSIS_EXECUTABLE) + include(${CMAKE_SOURCE_DIR}/cmake/CMakePack.cmake) + endif() + else() + include(${CMAKE_SOURCE_DIR}/cmake/CMakePack.cmake) + endif () + # 以下include必须放在主CMakeLists.txt文件最后面,否则在Visual Studio中不会生成PACKAGE(打包)目标 + include(CPack) +endif() diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..09b2520 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,29 @@ +# 产品更新日志 + +Version:2.5.x + +--- +更新时间:2020-05-08 + +**新增功能** +- 后处理增加tecplot文件(szplt)的读取。 +- 加入OpenGL版本检测函数,当环境OPenGL版本低于3.3时,给出错误提示。 +- 新增自动打包功能,Windows需要NSIS 3.03+、Linux需要dpkg-deb或者rpmbuild(需要python3)。 +- 新增文档自动生成功能,需要安装Doxygen和Graphviz。 + +**功能优化** +- 代码全部采用cmake进行管理,可任意选择vscode、Visual Studio、Clion、Qtcreator等支持cmake系统的IDE。 +- 后处理代码重构。 +- 删除Qt浏览器组建及相关依赖(Qt安装不再需要QWebEngine组件)。 +- 优化Python调用,不再依赖系统配置,简化操作。 +- 从依赖库中移除未使用的VTK、OpenCASCADE模块。 + +**功能修复** +- 修复linux环境卸载插件时崩溃的问题 +- 修复单个窗口下视图控制不正常的问题 +- 修复几何绘制线段失败的问题 + +**其他** +- OpenCASCADE的版本变更(7.5.0->7.6.0)。 +- gmsh的版本变更(4.5.4->4.8.0)。 +- linux环境下的依赖库基于GLIBC2.17编译,基本满足现有linux操作系统要求。 \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0c70d9d --- /dev/null +++ b/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2020, LiBaojun +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fba8cf9 --- /dev/null +++ b/README.md @@ -0,0 +1,142 @@ + +# 说明 + + +## 源码文件夹结构 +- cmake: cmake相关的脚本 +- doc: 生成文档需要的模板及配置文件 +- extlib: 第三方依赖库(见下文extlib获取方式) +- src: FastCAE源码 +- test: 包含单元测试代码(待整理) + + +### extlib目录结构 + + ``` + extlib + ├─CGNS(version:4.3.0) + │ + ├─Gmsh(version:4.8.0) + │ + ├─HDF5(version:1.13.1) + │ + ├─OCC(version:7.6.0) + │ + ├─Python(version:3.7.0) + │ + ├─QuaZIP(version:0.7.3) + │ + ├─Qwt(version: Qwt:6.1.6 QwtPolar:1.1.1) + │ + ├─TecIO(version:1.4.2) + │ + └─VTK(version:9.0.1) + + ``` + + +### extlib获取方式 + + ### Linux系统 + + ```bash + git clone https://gitee.com/DISOGitee/FastCAELinuxExtlib.git extlib + ``` + + ### windows系统 + + ```bash + git clone https://gitee.com/DISOGitee/FastCAEWinExtlib.git extlib + ``` + + + +## 编译打包 + +项目采用cmake构建系统组织代码,可以直接使用cmake转换visual studio 2017工程或者生成Makefile文件,或者可以直接使用支持cmake系统的IDE(比如:vscode、clion、visual studio、qtcreator等)打开项目文件夹进行构建、编译。 + +> 项目依赖文件会在构建阶段根据系统自动克隆对应的依赖库到本地extlib文件夹,如果需要离线部署,可以在“extlib获取方式”中离线下载依赖库。 + +构建项目: + +``` +cmake -DCMAKE_INSTALL_PREFIX:PATH=/path_to_install -DQt5_DIR:PATH=/path_of_Qt5Config.cmake -B build -S . +``` + +> 如果在windows环境下使用命令行构建项目需要增加参数`-G "Visual Studio 15 2017 Win64"`,具体参数需要根据自己的Visual Studio的版本确定, + +安装: + +``` +cmake --build build --target install +``` + +源码(`.tar.gz` and `.zip`)打包: + +``` +cmake --build build --target package_source +``` + +制作安装包(`.deb` `.rpm` `.exe`): + +``` +cmake --build build --target package +``` + +**备注:** +> 1、如果构建系统是Makefile、Ninja、Xcode,则生成`package`目标,如果是MVSC构建系统,则生成大写的`PACKAGE`目标。 +> +> > `cmake --build . --target package` 或者 `make package` 或者 `ninja package` + +> 2、如果构建系统是Makefile、Ninja,还会则生成`package_source`目标用于打包源码。 +> +> > `cmake --build . --target package_source` 或者 `make package_source` 或者 `ninja package_source` + + + +## 特别说明 + +- 源码绝对路径中不要出现中文字符、空格以及特殊字符:(){}*/?|\等 +- 要求cmake的最低版本为3.21 +- windows环境制作安装包要求NSIS版本为3.03+ +- linux环境制作安装包需要安装`dpkg-deb`或者`rpmbuild` +- linux的其他系统依赖包`OpenGL`、`fontconfig`、`xkbcommon` + + +## 测试平台 +| 序号 | 操作系统 | GLIBC版本 | 编译器 | Qt | 测试结果 | 备注 | +| :--: | :-----------: | :-------: | :---------: | :--: | :--: | :--: | +| 1 | Ubuntu18.04 | 2.27 | GNU GCC 7.5.0 | Qt5.14.2 | 通过 | | +| 2 | Ubuntu20.04 | 2.31 | GNU GCC 9.4.0 | Qt5.14.2 | 通过 | | +| 3 | Ubuntu22.04 | 2.35 | GNU GCC 11.2.0 | Qt5.14.2 | 通过 | deb成功打包 | +| 4 | CentOS 7.0.1406 | 2.17 | GNU GCC 8.3.1 | Qt5.14.2 | 通过 | 借助devtoolset-8升级GCC | +| 5 | CentOS 7.9.2009 | 2.17 | GNU GCC 7.5.0 | Qt5.14.2 | 通过 | | +| 6 | CentOS 8.5.2111 | 2.28 | GNU GCC 8.5.0 | Qt5.14.2 | 通过 | rpm成功打包 | +| 7 | RedHat Server 7.0 | | | | | 待测试 | +| 8 | RedHat 8.1 | 2.28 | GNU GCC 8.5.0 | Qt5.14.2 | 通过 | | +| 9 | RedHat 9.0 | | | | | 待测试 | +| 10 | Windows7 X64 | 无 | Visual Studio 2017 Community | Qt5.14.2 | 通过 | VS附带安装Windows 8.1SDK | +| 11 | Windows10 X64 | 无 | Visual Studio 2017 Community | Qt5.14.2 | 通过 | SDK 10.0.17763.0,NSIS成功打包 | +| 12 | deepin 20.7社区版 | | | | | 待测试 | +| 13 | ubuntukylin 22.04 | 2.35 | GNU GCC 11.2.0 | Qt5.14.2 | 通过 | 基于Ubuntu22.04 | + + +## 相关链接 + +- 帮助文档:http://www.fastcae.com/index.php?mod=document +- 社区论坛:http://disc.fastcae.com/ + + +## 感谢开源贡献者 + +- 陈宗衍 czy.t@163.com(Ribbon风格组件) +- 张立春 zhang.lichun@foxmail.com(远程任务提交插件) +- 赵德祥 zhao.dexiang@foxmail.com(远程任务提交插件) +- 万义钊 wanyizhao@mail.cgs.gov.cn (Tecplot后处理文件格式szplt解析) + + +## 使用交流 + +技术交流QQ群:671925863 + +官方微信号:FastCAE-DISO diff --git a/cmake/CMakePack.cmake b/cmake/CMakePack.cmake new file mode 100644 index 0000000..d7b54f0 --- /dev/null +++ b/cmake/CMakePack.cmake @@ -0,0 +1,93 @@ +# 声明包的名称 +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +# 声明包的供应商 +set(CPACK_PACKAGE_VENDOR "青岛数智船海科技有限公司") +# 打包的源代码将包括一个描述文件。这是带有安装说明的纯文本文件 +set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md") +# 添加包的描述 +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJCT_DESCRIPTION}") +# 许可证文件 +set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") +# site +set(CPACK_SITE "${PROJECT_HOMEPAGE_URL}") +# 从发布包中安装时,文件将放在/opt/${PROJECT_NAME}目录下 +#[[if(FASTCAE_WIN) + set(CPACK_PACKAGING_INSTALL_PREFIX "C:\\Program Files\\${PROJECT_NAME}") +else() + set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/${PROJECT_NAME}") +endif()]] +set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") +# CPack所需的主要、次要和补丁版本: +set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") +set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +# 设置了在包装的时候需要忽略的文件列表和目录 +set(CPACK_SOURCE_IGNORE_FILES "${PROJECT_BINARY_DIR};/install/;/.git/;/.vscode/;.gitignore") +# 列出了源代码归档的打包生成器 +set(CPACK_SOURCE_GENERATOR "ZIP;TGZ") +# 二进制存档生成器 +set(CPACK_GENERATOR "ZIP;TGZ") +# 声明平台原生二进制安装程序,从DEB和RPM包生成器开始,不过只适用于GNU/Linux +if(UNIX) + if(CMAKE_SYSTEM_NAME MATCHES Linux) + find_program(_deb dpkg-deb) + string(FIND ${_deb} "dpkg-deb" _result) + if(NOT _result STREQUAL "-1") + list(APPEND CPACK_GENERATOR "DEB") + set(CPACK_DEBIAN_PACKAGE_NAME ${CPACK_PACKAGE_NAME}) + set(CPACK_DEBIAN_PACKAGE_VERSION ${PROJECT_VERSION}) + set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR}) + set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_SITE}) + set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) + set(CPACK_DEBIAN_PACKAGE_RELEASE "1") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libfontconfig-dev") + endif() + find_program(_rpm rpmbuild) + string(FIND ${_rpm} "rpmbuild" _result) + if(NOT _result STREQUAL "-1") + list(APPEND CPACK_GENERATOR "RPM") + set(CPACK_RPM_PACKAGE_SUMMARY ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) + set(CPACK_RPM_PACKAGE_NAME ${CPACK_PACKAGE_NAME}) + set(CPACK_RPM_PACKAGE_VERSION ${PROJECT_VERSION}) + set(CPACK_RPM_PACKAGE_VENDOR ${CPACK_PACKAGE_VENDOR}) + set(CPACK_RPM_PACKAGE_URL ${CPACK_SITE}) + set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) + set(CPACK_RPM_PACKAGE_RELEASE "1") + set(CPACK_RPM_PACKAGE_LICENSE "BSD 3-Clause") + set(CPACK_RPM_PACKAGE_REQUIRES "fontconfig-devel") + set(CPACK_RPM_PACKAGE_AUTOREQ NO) + endif() + endif() +endif() +# 在windows上生成一个NSIS安装程序 +# NSIS相关的变量https://cmake.org/cmake/help/latest/cpack_gen/nsis.html#cpack_gen:CPack%20NSIS%20Generator +if(WIN32 OR MINGW) + if (NSIS_EXECUTABLE) + list(APPEND CPACK_GENERATOR "NSIS") + #set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}") + #set(CPACK_NSIS_INSTALL_ROOT "C:\\Program Files") + set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/src/qrc/QUI/main.ico") + set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/src/qrc/QUI/uninstall.ico") + #set(CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR}/src/qrc/QUI/WELCOMEFINISHPAGE.bmp") + #set(CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP "${CMAKE_SOURCE_DIR}/src/qrc/QUI/UNWELCOMEFINISHPAGE.bmp") + #set(CPACK_NSIS_MUI_HEADERIMAGE "${CMAKE_SOURCE_DIR}/src/qrc/QUI/HEADERIMAGE.bmp") + set(CPACK_NSIS_MODIFY_PATH ON) + set(CPACK_NSIS_MUI_FINISHPAGE_RUN ON) + set(CPACK_NSIS_HELP_LINK "http://www.fastcae.com/index.php?mod=document") + set(CPACK_NSIS_URL_INFO_ABOUT "http://www.fastcae.com/index.php?mod=product") + set(CPACK_NSIS_MENU_LINKS + "http://www.fastcae.com/index.php?mod=document" "FastCAE文档" + "http://www.fastcae.com/index.php?mod=product" "FastCAE介绍" + "CMake Help" "http://www.fastcae.com/" "FastCAE网站" + ) + set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) + elseif(WIX_EXECUTABLE) + list(APPEND CPACK_GENERATOR "WIX") + set(CPACK_WIX_PROPERTY_ARPCOMMENTS ${CPACK_PACKAGE_DESCRIPTION_SUMMARY}) + set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "http://www.fastcae.com/index.php?mod=product") + set(CPACK_WIX_PROPERTY_ARPHELPLINK "http://www.fastcae.com/") + endif () +endif() + +# 向用户打印一条信息 +message(STATUS "CPack generators: ${CPACK_GENERATOR}") \ No newline at end of file diff --git a/cmake/Deployqt.cmake b/cmake/Deployqt.cmake new file mode 100644 index 0000000..d15f93c --- /dev/null +++ b/cmake/Deployqt.cmake @@ -0,0 +1,81 @@ +# Deployqt +# -------- +# +# Define a function which can find the Qt dependent library and copy them to the bin directory +# +# Usage +# ^^^^^^^^^^^^^^^^ +# +# deployqt(target dir) +# + +#----------------------------------------------------------------------------- +# 获取windeployqt程序路径WINDEPLOYQT_EXECUTABLE +#----------------------------------------------------------------------------- +if(NOT WINDEPLOYQT_EXECUTABLE) + get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) + get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") +endif() + +#----------------------------------------------------------------------------- +# 函数定义deployqt(target dir) +#----------------------------------------------------------------------------- +function(deployqt target directory) + # 在构建完执行命令,拷贝文件到构建目录 + add_custom_command(TARGET ${target} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E + env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" + --verbose 0 + --no-compiler-runtime + --release + \"$\" + ) + + # 生成路径保存到文件 + file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${target}_$_path" + CONTENT "$" + ) + + install(CODE + " + file(READ \"${CMAKE_CURRENT_BINARY_DIR}/${target}_${CMAKE_BUILD_TYPE}_path\" _file) + execute_process( + COMMAND \"${CMAKE_COMMAND}\" -E + env PATH=\"${_qt_bin_dir}\" \"${WINDEPLOYQT_EXECUTABLE}\" + --dry-run + --no-compiler-runtime + --release + --list mapping + \${_file} + OUTPUT_VARIABLE _output + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + separate_arguments(_files WINDOWS_COMMAND \${_output}) + while(_files) + list(GET _files 0 _src) + list(GET _files 1 _dest) + execute_process( + COMMAND \"${CMAKE_COMMAND}\" -E + copy \${_src} \"\${CMAKE_INSTALL_PREFIX}/${directory}/\${_dest}\" + ) + list(REMOVE_AT _files 0 1) + endwhile() + " + ) + + # windeployqt doesn't work correctly with the system runtime libraries, + # so we fall back to one of CMake's own modules for copying them over + set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) + include(InstallRequiredSystemLibraries) + foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}) + get_filename_component(filename "${lib}" NAME) + add_custom_command(TARGET ${target} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E + copy_if_different "${lib}" \"$\" + ) + endforeach() + +endfunction() + +mark_as_advanced(WINDEPLOYQT_EXECUTABLE) \ No newline at end of file diff --git a/cmake/FindCGNS.cmake b/cmake/FindCGNS.cmake new file mode 100644 index 0000000..0f6a74c --- /dev/null +++ b/cmake/FindCGNS.cmake @@ -0,0 +1,99 @@ +# FindCGNS +# -------- +# +# Find the CGNS libraries(Only for CGNS provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``CGNS_FOUND`` True if CGNS found on the local system +# +# ``CGNS_VERSION`` CGNS Version(x.x.x) +# +# ``CGNS_VERSION_MAJOR`` CGNS Major Version +# +# ``CGNS_VERSION_MINOR`` CGNS Minor Version +# +# ``CGNS_VERSION_PATCH`` CGNS Patch Version +# +# ``CGNS_DIRS`` Location of CGNS(root dir) +# +# ``CGNS_INCLUDE_DIRS`` Location of CGNS header files +# +# ``CGNS_LIBRARY_DIRS`` Location of CGNS libraries +# +# ``CGNS_LIBRARIES`` List of the CGNS libraries found +# + +# 防止重复引入 +if(FASTCAE_CGNS_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_CGNS_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(CGNS_DIRS + NAMES + include/cgnslib.h + PATHS + ${CMAKE_SOURCE_DIR}/extlib/CGNS + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(CGNS_VERSION_MAJOR 4) +set(CGNS_VERSION_MINOR 3) +set(CGNS_VERSION_PATCH 0) + +set(CGNS_VERSION "${CGNS_VERSION_MAJOR}.${CGNS_VERSION_MINOR}.${CGNS_VERSION_PATCH}") + +find_path(CGNS_INCLUDE_DIRS + NAMES + cgnslib.h + HINTS + ${CGNS_DIRS}/include +) + +find_path(CGNS_LIBRARY_DIRS + NAMES + cgnsdll.lib libcgns.so + HINTS + ${CGNS_DIRS}/lib +) + +set(CGNS_LIBRARIES FASTCAE::CGNS) + +add_library(FASTCAE::CGNS SHARED IMPORTED) +set_property(TARGET FASTCAE::CGNS PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CGNS_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::CGNS APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::CGNS PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::HDF5) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(FASTCAE::CGNS PROPERTIES + IMPORTED_LOCATION_RELEASE "${CGNS_LIBRARY_DIRS}/libcgns.so.${CGNS_VERSION_MAJOR}.${CGNS_VERSION_MINOR}" + IMPORTED_SONAME_RELEASE "libcgns.so" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties(FASTCAE::CGNS PROPERTIES + IMPORTED_IMPLIB_RELEASE "${CGNS_LIBRARY_DIRS}/cgnsdll.lib" + IMPORTED_LOCATION_RELEASE "${CGNS_DIRS}/bin/cgnsdll.dll" + ) +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将CGNS_FOUND变量设置为TRUE +find_package_handle_standard_args(CGNS + FOUND_VAR + CGNS_FOUND + REQUIRED_VARS + CGNS_DIRS + CGNS_INCLUDE_DIRS + CGNS_LIBRARY_DIRS + CGNS_LIBRARIES + VERSION_VAR + CGNS_VERSION +) \ No newline at end of file diff --git a/cmake/FindGmsh.cmake b/cmake/FindGmsh.cmake new file mode 100644 index 0000000..681e7e1 --- /dev/null +++ b/cmake/FindGmsh.cmake @@ -0,0 +1,66 @@ +# FindGmsh +# -------- +# +# Find the Gmsh exe (Only for Gmsh provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``Gmsh_FOUND`` True if Gmsh found on the local system +# +# ``Gmsh_VERSION`` Gmsh Version(x.x.x) +# +# ``Gmsh_VERSION_MAJOR`` Gmsh Major Version +# +# ``Gmsh_VERSION_MINOR`` Gmsh Minor Version +# +# ``Gmsh_VERSION_PATCH`` Gmsh Patch Version +# +# ``Gmsh_DIRS`` Location of Gmsh(root dir) +# +# ``Gmsh_EXECUTABLE`` Location of Gmsh program +# + +# 防止重复引入 +if(Gmsh_ALREADY_INCLUDED) + return() +endif() +set(Gmsh_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(Gmsh_DIRS + NAMES + gmsh.exe gmsh + PATHS + ${CMAKE_SOURCE_DIR}/extlib/Gmsh + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(Gmsh_VERSION_MAJOR 4) +set(Gmsh_VERSION_MINOR 8) +set(Gmsh_VERSION_PATCH 0) + +set(Gmsh_VERSION "${Gmsh_VERSION_MAJOR}.${Gmsh_VERSION_MINOR}.${Gmsh_VERSION_PATCH}") + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(Gmsh_EXECUTABLE "${Gmsh_DIRS}/gmsh.exe") +else() + set(Gmsh_EXECUTABLE "${Gmsh_DIRS}/gmsh") +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将Gmsh_FOUND变量设置为TRUE +find_package_handle_standard_args(Gmsh + FOUND_VAR + Gmsh_FOUND + REQUIRED_VARS + Gmsh_DIRS + Gmsh_EXECUTABLE + VERSION_VAR + Gmsh_VERSION +) \ No newline at end of file diff --git a/cmake/FindHDF5.cmake b/cmake/FindHDF5.cmake new file mode 100644 index 0000000..26fbcef --- /dev/null +++ b/cmake/FindHDF5.cmake @@ -0,0 +1,151 @@ +# FindHDF5 +# -------- +# +# Find the HDF5 libraries(Only for HDF5 provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``HDF5_FOUND`` True if HDF5 found on the local system +# +# ``HDF5_VERSION`` HDF5 Version(x.x.x) +# +# ``HDF5_VERSION_MAJOR`` HDF5 Major Version +# +# ``HDF5_VERSION_MINOR`` HDF5 Minor Version +# +# ``HDF5_VERSION_PATCH`` HDF5 Patch Version +# +# ``HDF5_DIRS`` Location of HDF5(root dir) +# +# ``HDF5_INCLUDE_DIRS`` Location of HDF5 header files +# +# ``HDF5_LIBRARY_DIRS`` Location of HDF5 libraries +# +# ``HDF5_LIBRARIES`` List of the HDF5 libraries found +# + +# 防止重复引入 +if(FASTCAE_HDF5_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_HDF5_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(HDF5_DIRS + NAMES + include/hdf5.h + PATHS + ${CMAKE_SOURCE_DIR}/extlib/HDF5 + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(HDF5_VERSION_MAJOR 1) +set(HDF5_VERSION_MINOR 13) +set(HDF5_VERSION_PATCH 1) + +set(HDF5_VERSION "${HDF5_VERSION_MAJOR}.${HDF5_VERSION_MINOR}.${HDF5_VERSION_PATCH}") + +find_path(HDF5_INCLUDE_DIRS + NAMES + hdf5.h + HINTS + ${HDF5_DIRS}/include +) + +find_path(HDF5_LIBRARY_DIRS + NAMES + hdf5.lib libhdf5.so + HINTS + ${HDF5_DIRS}/lib +) + +set(HDF5_LIBRARIES FASTCAE::HDF5;FASTCAE::HDF5CPP;FASTCAE::HDF5HL;FASTCAE::HDF5HLCPP;FASTCAE::HDF5TOOLS) + +add_library(FASTCAE::HDF5 SHARED IMPORTED) +add_library(FASTCAE::HDF5CPP SHARED IMPORTED) +add_library(FASTCAE::HDF5HL SHARED IMPORTED) +add_library(FASTCAE::HDF5HLCPP SHARED IMPORTED) +add_library(FASTCAE::HDF5TOOLS SHARED IMPORTED) + +set_property(TARGET FASTCAE::HDF5 PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::HDF5 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + +set_property(TARGET FASTCAE::HDF5CPP PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::HDF5CPP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::HDF5CPP PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::HDF5) + +set_property(TARGET FASTCAE::HDF5HL PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::HDF5HL APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::HDF5HL PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::HDF5) + +set_property(TARGET FASTCAE::HDF5HLCPP PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::HDF5HLCPP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::HDF5HLCPP PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::HDF5HL) + +set_property(TARGET FASTCAE::HDF5TOOLS PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${HDF5_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::HDF5TOOLS APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::HDF5TOOLS PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::HDF5) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(FASTCAE::HDF5 PROPERTIES + IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5.so.300.1.0" + IMPORTED_SONAME_RELEASE "libhdf5.so.300" + ) + set_target_properties(FASTCAE::HDF5CPP PROPERTIES + IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_cpp.so.300.0.1" + IMPORTED_SONAME_RELEASE "libhdf5_cpp.so.300" + ) + set_target_properties(FASTCAE::HDF5HL PROPERTIES + IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_hl.so.300.0.1" + IMPORTED_SONAME_RELEASE "libhdf5_hl.so.300" + ) + set_target_properties(FASTCAE::HDF5HLCPP PROPERTIES + IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_hl_cpp.so.300.0.1" + IMPORTED_SONAME_RELEASE "libhdf5_hl_cpp.so.300" + ) + set_target_properties(FASTCAE::HDF5TOOLS PROPERTIES + IMPORTED_LOCATION_RELEASE "${HDF5_LIBRARY_DIRS}/libhdf5_tools.so.300.0.1" + IMPORTED_SONAME_RELEASE "libhdf5_tools.so.300" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties(FASTCAE::HDF5 PROPERTIES + IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5.lib" + IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5.dll" + ) + set_target_properties(FASTCAE::HDF5CPP PROPERTIES + IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_cpp.lib" + IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_cpp.dll" + ) + set_target_properties(FASTCAE::HDF5HL PROPERTIES + IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_hl.lib" + IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_hl.dll" + ) + set_target_properties(FASTCAE::HDF5HLCPP PROPERTIES + IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_hl_cpp.lib" + IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_hl_cpp.dll" + ) + set_target_properties(FASTCAE::HDF5TOOLS PROPERTIES + IMPORTED_IMPLIB_RELEASE "${HDF5_LIBRARY_DIRS}/hdf5_tools.lib" + IMPORTED_LOCATION_RELEASE "${HDF5_DIRS}/bin/hdf5_tools.dll" + ) +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将HDF5_FOUND变量设置为TRUE +find_package_handle_standard_args(HDF5 + FOUND_VAR + HDF5_FOUND + REQUIRED_VARS + HDF5_DIRS + HDF5_INCLUDE_DIRS + HDF5_LIBRARY_DIRS + HDF5_LIBRARIES + VERSION_VAR + HDF5_VERSION +) \ No newline at end of file diff --git a/cmake/FindOpenCASCADE.cmake b/cmake/FindOpenCASCADE.cmake new file mode 100644 index 0000000..df6ec20 --- /dev/null +++ b/cmake/FindOpenCASCADE.cmake @@ -0,0 +1,214 @@ +# FindOpenCASCADE +# -------- +# +# Find the OpenCASCADE libraries(Only for OpenCASCADE provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``OpenCASCADE_FOUND`` True if OpenCASCADE found on the local system +# +# ``OpenCASCADE_VERSION`` OpenCASCADE Version(x.x.x) +# +# ``OpenCASCADE_VERSION_MAJOR`` OpenCASCADE Major Version +# +# ``OpenCASCADE_VERSION_MINOR`` OpenCASCADE Minor Version +# +# ``OpenCASCADE_VERSION_PATCH`` OpenCASCADE Patch Version +# +# ``OpenCASCADE_DIRS`` Location of OpenCASCADE(root dir) +# +# ``OpenCASCADE_INCLUDE_DIRS`` Location of OpenCASCADE header files +# +# ``OpenCASCADE_LIBRARY_DIRS`` Location of OpenCASCADE libraries +# +# ``OpenCASCADE_LIBRARIES`` List of the OpenCASCADE libraries found +# +# ``OpenCASCADE_BINARY_DIRS`` Location of OpenCASCADE binary +# + +# 防止重复引入 +if(FASTCAE_OpenCASCADE_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_OpenCASCADE_ALREADY_INCLUDED 1) + +set(OpenCASCADE_DIRS "${CMAKE_SOURCE_DIR}/extlib/OpenCASCADE") + +set(OpenCASCADE_VERSION_MAJOR 7) +set(OpenCASCADE_VERSION_MINOR 6) +set(OpenCASCADE_VERSION_PATCH 0) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(OpenCASCADE_INCLUDE_DIRS "${OpenCASCADE_DIRS}/inc") + set(OpenCASCADE_LIBRARY_DIRS "${OpenCASCADE_DIRS}/win64/vc14/lib") + set(OpenCASCADE_BINARY_DIRS "${OpenCASCADE_DIRS}/win64/vc14/bin") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(OpenCASCADE_INCLUDE_DIRS "${OpenCASCADE_DIRS}/include/opencascade") + set(OpenCASCADE_LIBRARY_DIRS "${OpenCASCADE_DIRS}/lib") + set(OpenCASCADE_BINARY_DIRS "${OpenCASCADE_DIRS}/bin") +endif() + +set(OpenCASCADE_VERSION "${OpenCASCADE_VERSION_MAJOR}.${OpenCASCADE_VERSION_MINOR}.${OpenCASCADE_VERSION_PATCH}") + +macro(_populate_target_properties _target) + add_library(${_target} SHARED IMPORTED) + set_property(TARGET ${_target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${OpenCASCADE_INCLUDE_DIRS}) + set_property(TARGET ${_target} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + if(ARGC GREATER 1) + set_property(TARGET ${_target} PROPERTY INTERFACE_LINK_LIBRARIES ARGN) + endif() + string(SUBSTRING ${_target} 13 -1 _target_name) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(${_target} PROPERTIES + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/lib${_target_name}.so.${OpenCASCADE_VERSION_MAJOR}.${OpenCASCADE_VERSION_MINOR}.${OpenCASCADE_VERSION_PATCH}" + IMPORTED_SONAME_RELEASE "lib${_target_name}.so.${OpenCASCADE_VERSION_MAJOR}" + ) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_property(TARGET ${_target} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(${_target} PROPERTIES + IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/${_target_name}.lib" + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIRS}/${_target_name}.dll" + IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIRS}d/${_target_name}.lib" + IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIRS}d/${_target_name}.dll" + ) + endif() +endmacro() + +add_library(OpenCASCADE::Freetype SHARED IMPORTED) +add_library(OpenCASCADE::Tcl86 SHARED IMPORTED) +add_library(OpenCASCADE::Tk86 SHARED IMPORTED) +set_property(TARGET OpenCASCADE::Freetype APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET OpenCASCADE::Tcl86 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET OpenCASCADE::Tk86 APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(OpenCASCADE::Freetype PROPERTIES + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/libfreetype.so.6" + ) + set_target_properties(OpenCASCADE::Tcl86 PROPERTIES + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/libtcl8.6.so" + ) + set_target_properties(OpenCASCADE::Tk86 PROPERTIES + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/libtk8.6.so" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_property(TARGET OpenCASCADE::Freetype APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_property(TARGET OpenCASCADE::Tcl86 APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_property(TARGET OpenCASCADE::Tk86 APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(OpenCASCADE::Freetype PROPERTIES + IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/freetype.lib" + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIRS}/freetype.dll" + IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIRS}d/freetype.lib" + IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIRS}d/freetype.dll" + ) + set_target_properties(OpenCASCADE::Tcl86 PROPERTIES + IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/tcl86.lib" + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIRS}/tcl86.dll" + IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIRS}d/tcl86.lib" + IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIRS}d/tcl86.dll" + ) + set_target_properties(OpenCASCADE::Tk86 PROPERTIES + IMPORTED_IMPLIB_RELEASE "${OpenCASCADE_LIBRARY_DIRS}/tk86.lib" + IMPORTED_LOCATION_RELEASE "${OpenCASCADE_BINARY_DIRS}/tk86.dll" + IMPORTED_IMPLIB_DEBUG "${OpenCASCADE_LIBRARY_DIRS}d/tk86.lib" + IMPORTED_LOCATION_DEBUG "${OpenCASCADE_BINARY_DIRS}d/tk86.dll" + ) +endif() + +# List of available OpenCASCADE libraries for each module +set (OpenCASCADE_FoundationClasses_LIBRARIES OpenCASCADE::TKernel OpenCASCADE::TKMath) +set (OpenCASCADE_ModelingData_LIBRARIES OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep) +set (OpenCASCADE_ModelingAlgorithms_LIBRARIES OpenCASCADE::TKGeomAlgo OpenCASCADE::TKTopAlgo OpenCASCADE::TKPrim OpenCASCADE::TKBO OpenCASCADE::TKShHealing OpenCASCADE::TKBool OpenCASCADE::TKHLR OpenCASCADE::TKFillet OpenCASCADE::TKOffset OpenCASCADE::TKFeat OpenCASCADE::TKMesh OpenCASCADE::TKXMesh) +set (OpenCASCADE_Visualization_LIBRARIES OpenCASCADE::TKService OpenCASCADE::TKV3d OpenCASCADE::TKOpenGl OpenCASCADE::TKMeshVS OpenCASCADE::TKIVtk) +set (OpenCASCADE_ApplicationFramework_LIBRARIES OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKCAF OpenCASCADE::TKBinL OpenCASCADE::TKXmlL OpenCASCADE::TKBin OpenCASCADE::TKXml OpenCASCADE::TKStdL OpenCASCADE::TKStd OpenCASCADE::TKTObj OpenCASCADE::TKBinTObj OpenCASCADE::TKXmlTObj OpenCASCADE::TKVCAF) +set (OpenCASCADE_DataExchange_LIBRARIES OpenCASCADE::TKXSBase OpenCASCADE::TKSTEPBase OpenCASCADE::TKSTEPAttr OpenCASCADE::TKSTEP209 OpenCASCADE::TKSTEP OpenCASCADE::TKIGES OpenCASCADE::TKXCAF OpenCASCADE::TKXDEIGES OpenCASCADE::TKXDESTEP OpenCASCADE::TKSTL OpenCASCADE::TKVRML OpenCASCADE::TKXmlXCAF OpenCASCADE::TKBinXCAF OpenCASCADE::TKRWMesh) +set (OpenCASCADE_Draw_LIBRARIES OpenCASCADE::TKDraw OpenCASCADE::TKTopTest OpenCASCADE::TKOpenGlTest OpenCASCADE::TKViewerTest OpenCASCADE::TKXSDRAW OpenCASCADE::TKDCAF OpenCASCADE::TKXDEDRAW OpenCASCADE::TKTObjDRAW OpenCASCADE::TKQADraw OpenCASCADE::TKIVtkDraw) + +# List of available OpenCASCADE libraries. +set (OpenCASCADE_LIBRARIES OpenCASCADE::Freetype OpenCASCADE::Tcl86 OpenCASCADE::Tk86 OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep OpenCASCADE::TKGeomAlgo OpenCASCADE::TKTopAlgo OpenCASCADE::TKPrim OpenCASCADE::TKBO OpenCASCADE::TKShHealing OpenCASCADE::TKBool OpenCASCADE::TKHLR OpenCASCADE::TKFillet OpenCASCADE::TKOffset OpenCASCADE::TKFeat OpenCASCADE::TKMesh OpenCASCADE::TKXMesh OpenCASCADE::TKService OpenCASCADE::TKV3d OpenCASCADE::TKOpenGl OpenCASCADE::TKMeshVS OpenCASCADE::TKIVtk OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKCAF OpenCASCADE::TKBinL OpenCASCADE::TKXmlL OpenCASCADE::TKBin OpenCASCADE::TKXml OpenCASCADE::TKStdL OpenCASCADE::TKStd OpenCASCADE::TKTObj OpenCASCADE::TKBinTObj OpenCASCADE::TKXmlTObj OpenCASCADE::TKVCAF OpenCASCADE::TKXSBase OpenCASCADE::TKSTEPBase OpenCASCADE::TKSTEPAttr OpenCASCADE::TKSTEP209 OpenCASCADE::TKSTEP OpenCASCADE::TKIGES OpenCASCADE::TKXCAF OpenCASCADE::TKXDEIGES OpenCASCADE::TKXDESTEP OpenCASCADE::TKSTL OpenCASCADE::TKVRML OpenCASCADE::TKXmlXCAF OpenCASCADE::TKBinXCAF OpenCASCADE::TKRWMesh OpenCASCADE::TKDraw OpenCASCADE::TKTopTest OpenCASCADE::TKOpenGlTest OpenCASCADE::TKViewerTest OpenCASCADE::TKXSDRAW OpenCASCADE::TKDCAF OpenCASCADE::TKXDEDRAW OpenCASCADE::TKTObjDRAW OpenCASCADE::TKQADraw OpenCASCADE::TKIVtkDraw) + +_populate_target_properties(OpenCASCADE::TKernel) +_populate_target_properties(OpenCASCADE::TKMath OpenCASCADE::TKernel) + +_populate_target_properties(OpenCASCADE::TKG2d OpenCASCADE::TKernel OpenCASCADE::TKMath) +_populate_target_properties(OpenCASCADE::TKG3d OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d) +_populate_target_properties(OpenCASCADE::TKGeomBase OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d) +_populate_target_properties(OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase) + +_populate_target_properties(OpenCASCADE::TKGeomAlgo OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG3d OpenCASCADE::TKG2d OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep) +_populate_target_properties(OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep OpenCASCADE::TKGeomAlgo) +_populate_target_properties(OpenCASCADE::TKPrim OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKGeomBase OpenCASCADE::TKG3d OpenCASCADE::TKTopAlgo) +_populate_target_properties(OpenCASCADE::TKBO OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKPrim OpenCASCADE::TKShHealing) +_populate_target_properties(OpenCASCADE::TKShHealing OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKTopAlgo OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo) +_populate_target_properties(OpenCASCADE::TKBool OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKPrim OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKShHealing OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo OpenCASCADE::TKBO) +_populate_target_properties(OpenCASCADE::TKHLR OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKGeomBase OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKTopAlgo) +_populate_target_properties(OpenCASCADE::TKFillet OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo OpenCASCADE::TKG2d OpenCASCADE::TKTopAlgo OpenCASCADE::TKG3d OpenCASCADE::TKBool OpenCASCADE::TKShHealing OpenCASCADE::TKBO) +_populate_target_properties(OpenCASCADE::TKOffset OpenCASCADE::TKFillet OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKGeomBase OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKShHealing OpenCASCADE::TKBO OpenCASCADE::TKPrim OpenCASCADE::TKBool) +_populate_target_properties(OpenCASCADE::TKFeat OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKGeomAlgo OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKGeomBase OpenCASCADE::TKPrim OpenCASCADE::TKG2d OpenCASCADE::TKBO OpenCASCADE::TKG3d OpenCASCADE::TKBool OpenCASCADE::TKShHealing) +_populate_target_properties(OpenCASCADE::TKMesh OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKShHealing OpenCASCADE::TKGeomBase OpenCASCADE::TKG3d OpenCASCADE::TKG2d) +_populate_target_properties(OpenCASCADE::TKXMesh OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKMesh) + +_populate_target_properties(OpenCASCADE::TKService OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::Freetype) +_populate_target_properties(OpenCASCADE::TKV3d OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKService OpenCASCADE::TKShHealing OpenCASCADE::TKTopAlgo OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKMesh OpenCASCADE::TKGeomAlgo OpenCASCADE::TKHLR OpenCASCADE::Freetype) +_populate_target_properties(OpenCASCADE::TKOpenGl OpenCASCADE::TKernel OpenCASCADE::TKService OpenCASCADE::TKMath) +_populate_target_properties(OpenCASCADE::TKMeshVS OpenCASCADE::TKV3d OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKernel OpenCASCADE::TKG3d OpenCASCADE::TKG2d) +_populate_target_properties(OpenCASCADE::TKIVtk OpenCASCADE::TKernel OpenCASCADE::TKBRep OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKMath OpenCASCADE::TKMesh OpenCASCADE::TKService OpenCASCADE::TKTopAlgo OpenCASCADE::TKV3d VTK::CommonCore VTK::RenderingCore VTK::RenderingFreeType VTK::FiltersGeneral VTK::InteractionStyle VTK::RenderingOpenGL2 VTK::RenderingGL2PSOpenGL2) + +_populate_target_properties(OpenCASCADE::TKCDF OpenCASCADE::TKernel) +_populate_target_properties(OpenCASCADE::TKLCAF OpenCASCADE::TKCDF OpenCASCADE::TKernel) +_populate_target_properties(OpenCASCADE::TKCAF OpenCASCADE::TKernel OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKBO) +_populate_target_properties(OpenCASCADE::TKBinL OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKLCAF) +_populate_target_properties(OpenCASCADE::TKXmlL OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKLCAF) +_populate_target_properties(OpenCASCADE::TKBin OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKCAF OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKBinL) +_populate_target_properties(OpenCASCADE::TKXml OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKBRep OpenCASCADE::TKG2d OpenCASCADE::TKGeomBase OpenCASCADE::TKG3d OpenCASCADE::TKLCAF OpenCASCADE::TKCAF OpenCASCADE::TKXmlL) +_populate_target_properties(OpenCASCADE::TKStdL OpenCASCADE::TKernel OpenCASCADE::TKCDF OpenCASCADE::TKLCAF) +_populate_target_properties(OpenCASCADE::TKStd OpenCASCADE::TKernel OpenCASCADE::TKCDF OpenCASCADE::TKCAF OpenCASCADE::TKLCAF OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKStdL) +_populate_target_properties(OpenCASCADE::TKTObj OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKLCAF) +_populate_target_properties(OpenCASCADE::TKBinTObj OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKTObj OpenCASCADE::TKMath OpenCASCADE::TKLCAF OpenCASCADE::TKBinL) +_populate_target_properties(OpenCASCADE::TKXmlTObj OpenCASCADE::TKCDF OpenCASCADE::TKernel OpenCASCADE::TKTObj OpenCASCADE::TKMath OpenCASCADE::TKLCAF OpenCASCADE::TKXmlL) +_populate_target_properties(OpenCASCADE::TKVCAF OpenCASCADE::TKernel OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKBO OpenCASCADE::TKCAF OpenCASCADE::TKV3d) + +_populate_target_properties(OpenCASCADE::TKXSBase OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKTopAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKShHealing) +_populate_target_properties(OpenCASCADE::TKSTEPBase OpenCASCADE::TKernel OpenCASCADE::TKXSBase OpenCASCADE::TKMath) +_populate_target_properties(OpenCASCADE::TKSTEPAttr OpenCASCADE::TKernel OpenCASCADE::TKXSBase OpenCASCADE::TKSTEPBase) +_populate_target_properties(OpenCASCADE::TKSTEP209 OpenCASCADE::TKernel OpenCASCADE::TKXSBase OpenCASCADE::TKSTEPBase) +_populate_target_properties(OpenCASCADE::TKSTEP OpenCASCADE::TKernel OpenCASCADE::TKSTEPAttr OpenCASCADE::TKSTEP209 OpenCASCADE::TKSTEPBase OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKShHealing OpenCASCADE::TKTopAlgo OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo OpenCASCADE::TKXSBase) +_populate_target_properties(OpenCASCADE::TKIGES OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKTopAlgo OpenCASCADE::TKShHealing OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo OpenCASCADE::TKPrim OpenCASCADE::TKBool OpenCASCADE::TKXSBase) +_populate_target_properties(OpenCASCADE::TKXCAF OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKG2d OpenCASCADE::TKTopAlgo OpenCASCADE::TKV3d OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKG3d OpenCASCADE::TKCAF OpenCASCADE::TKVCAF) +_populate_target_properties(OpenCASCADE::TKXDEIGES OpenCASCADE::TKBRep OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKXSBase OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKXCAF OpenCASCADE::TKIGES) +_populate_target_properties(OpenCASCADE::TKXDESTEP OpenCASCADE::TKBRep OpenCASCADE::TKSTEPAttr OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKXSBase OpenCASCADE::TKTopAlgo OpenCASCADE::TKG2d OpenCASCADE::TKCAF OpenCASCADE::TKSTEPBase OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKG3d OpenCASCADE::TKXCAF OpenCASCADE::TKSTEP OpenCASCADE::TKShHealing) +_populate_target_properties(OpenCASCADE::TKSTL OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKBRep OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKTopAlgo) +_populate_target_properties(OpenCASCADE::TKVRML OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKMath OpenCASCADE::TKGeomBase OpenCASCADE::TKernel OpenCASCADE::TKPrim OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKMesh OpenCASCADE::TKHLR OpenCASCADE::TKService OpenCASCADE::TKGeomAlgo OpenCASCADE::TKV3d OpenCASCADE::TKLCAF OpenCASCADE::TKXCAF) +_populate_target_properties(OpenCASCADE::TKXmlXCAF OpenCASCADE::TKXmlL OpenCASCADE::TKBRep OpenCASCADE::TKCDF OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKService OpenCASCADE::TKG2d OpenCASCADE::TKGeomBase OpenCASCADE::TKCAF OpenCASCADE::TKG3d OpenCASCADE::TKLCAF OpenCASCADE::TKXCAF OpenCASCADE::TKXml) +_populate_target_properties(OpenCASCADE::TKBinXCAF OpenCASCADE::TKBRep OpenCASCADE::TKXCAF OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKernel OpenCASCADE::TKBinL OpenCASCADE::TKG2d OpenCASCADE::TKCAF OpenCASCADE::TKCDF OpenCASCADE::TKG3d OpenCASCADE::TKLCAF OpenCASCADE::TKBin) +_populate_target_properties(OpenCASCADE::TKRWMesh OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKMesh OpenCASCADE::TKXCAF OpenCASCADE::TKLCAF OpenCASCADE::TKV3d OpenCASCADE::TKBRep OpenCASCADE::TKG3d OpenCASCADE::TKService) + +_populate_target_properties(OpenCASCADE::TKDraw OpenCASCADE::TKernel OpenCASCADE::TKG2d OpenCASCADE::TKGeomBase OpenCASCADE::TKG3d OpenCASCADE::TKMath OpenCASCADE::TKBRep OpenCASCADE::TKGeomAlgo OpenCASCADE::TKTopAlgo OpenCASCADE::TKShHealing OpenCASCADE::TKMesh OpenCASCADE::TKService OpenCASCADE::TKHLR OpenCASCADE::Tcl86 OpenCASCADE::Tk86) +_populate_target_properties(OpenCASCADE::TKTopTest OpenCASCADE::TKBRep OpenCASCADE::TKGeomAlgo OpenCASCADE::TKTopAlgo OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKBO OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKDraw OpenCASCADE::TKHLR OpenCASCADE::TKGeomBase OpenCASCADE::TKMesh OpenCASCADE::TKService OpenCASCADE::TKV3d OpenCASCADE::TKFillet OpenCASCADE::TKPrim OpenCASCADE::TKBool OpenCASCADE::TKOffset OpenCASCADE::TKFeat OpenCASCADE::TKShHealing) +_populate_target_properties(OpenCASCADE::TKOpenGlTest OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKDraw OpenCASCADE::TKOpenGl OpenCASCADE::TKService OpenCASCADE::TKV3d OpenCASCADE::TKViewerTest) +_populate_target_properties(OpenCASCADE::TKViewerTest OpenCASCADE::TKGeomBase OpenCASCADE::TKFillet OpenCASCADE::TKBRep OpenCASCADE::TKTopAlgo OpenCASCADE::TKHLR OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKShHealing OpenCASCADE::TKBool OpenCASCADE::TKPrim OpenCASCADE::TKGeomAlgo OpenCASCADE::TKG2d OpenCASCADE::TKTopTest OpenCASCADE::TKG3d OpenCASCADE::TKOffset OpenCASCADE::TKMesh OpenCASCADE::TKV3d OpenCASCADE::TKDraw OpenCASCADE::Tcl86 OpenCASCADE::Freetype) +_populate_target_properties(OpenCASCADE::TKXSDRAW OpenCASCADE::TKBRep OpenCASCADE::TKV3d OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKService OpenCASCADE::TKXSBase OpenCASCADE::TKMeshVS OpenCASCADE::TKG3d OpenCASCADE::TKViewerTest OpenCASCADE::TKG2d OpenCASCADE::TKSTEPBase OpenCASCADE::TKTopAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKGeomAlgo OpenCASCADE::TKMesh OpenCASCADE::TKDraw OpenCASCADE::TKSTEP OpenCASCADE::TKIGES OpenCASCADE::TKSTL OpenCASCADE::TKVRML OpenCASCADE::TKLCAF OpenCASCADE::TKDCAF OpenCASCADE::TKXCAF OpenCASCADE::TKRWMesh) +_populate_target_properties(OpenCASCADE::TKDCAF OpenCASCADE::TKGeomBase OpenCASCADE::TKBRep OpenCASCADE::TKGeomAlgo OpenCASCADE::TKernel OpenCASCADE::TKMath OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKDraw OpenCASCADE::TKCDF OpenCASCADE::TKV3d OpenCASCADE::TKService OpenCASCADE::TKLCAF OpenCASCADE::TKFillet OpenCASCADE::TKTopAlgo OpenCASCADE::TKPrim OpenCASCADE::TKBool OpenCASCADE::TKBO OpenCASCADE::TKCAF OpenCASCADE::TKVCAF OpenCASCADE::TKViewerTest OpenCASCADE::TKStd OpenCASCADE::TKStdL OpenCASCADE::TKBin OpenCASCADE::TKBinL OpenCASCADE::TKXml OpenCASCADE::TKXmlL) +_populate_target_properties(OpenCASCADE::TKXDEDRAW OpenCASCADE::TKCDF OpenCASCADE::TKBRep OpenCASCADE::TKXCAF OpenCASCADE::TKernel OpenCASCADE::TKIGES OpenCASCADE::TKV3d OpenCASCADE::TKMath OpenCASCADE::TKService OpenCASCADE::TKXSBase OpenCASCADE::TKG2d OpenCASCADE::TKCAF OpenCASCADE::TKVCAF OpenCASCADE::TKDraw OpenCASCADE::TKTopAlgo OpenCASCADE::TKLCAF OpenCASCADE::TKG3d OpenCASCADE::TKSTEPBase OpenCASCADE::TKSTEP OpenCASCADE::TKMesh OpenCASCADE::TKXSDRAW OpenCASCADE::TKXDEIGES OpenCASCADE::TKXDESTEP OpenCASCADE::TKDCAF OpenCASCADE::TKViewerTest OpenCASCADE::TKBinXCAF OpenCASCADE::TKXmlXCAF OpenCASCADE::TKVRML) +_populate_target_properties(OpenCASCADE::TKTObjDRAW OpenCASCADE::TKernel OpenCASCADE::TKCDF OpenCASCADE::TKLCAF OpenCASCADE::TKTObj OpenCASCADE::TKMath OpenCASCADE::TKDraw OpenCASCADE::TKDCAF OpenCASCADE::TKBinTObj OpenCASCADE::TKXmlTObj) +_populate_target_properties(OpenCASCADE::TKQADraw OpenCASCADE::TKBRep OpenCASCADE::TKMath OpenCASCADE::TKernel OpenCASCADE::TKService OpenCASCADE::TKG2d OpenCASCADE::TKDraw OpenCASCADE::TKV3d OpenCASCADE::TKGeomBase OpenCASCADE::TKG3d OpenCASCADE::TKViewerTest OpenCASCADE::TKCDF OpenCASCADE::TKDCAF OpenCASCADE::TKLCAF OpenCASCADE::TKFillet OpenCASCADE::TKTopAlgo OpenCASCADE::TKHLR OpenCASCADE::TKBool OpenCASCADE::TKGeomAlgo OpenCASCADE::TKPrim OpenCASCADE::TKBO OpenCASCADE::TKShHealing OpenCASCADE::TKOffset OpenCASCADE::TKFeat OpenCASCADE::TKCAF OpenCASCADE::TKVCAF OpenCASCADE::TKIGES OpenCASCADE::TKXSBase OpenCASCADE::TKMesh OpenCASCADE::TKXCAF OpenCASCADE::TKBinXCAF OpenCASCADE::TKSTEP OpenCASCADE::TKSTEPBase OpenCASCADE::TKXDESTEP OpenCASCADE::TKXSDRAW OpenCASCADE::TKSTL OpenCASCADE::TKXml OpenCASCADE::TKTObj OpenCASCADE::TKXmlL OpenCASCADE::TKBin OpenCASCADE::TKBinL OpenCASCADE::TKStd OpenCASCADE::TKStdL) +_populate_target_properties(OpenCASCADE::TKIVtkDraw OpenCASCADE::TKernel OpenCASCADE::TKBRep OpenCASCADE::TKDraw OpenCASCADE::TKG2d OpenCASCADE::TKG3d OpenCASCADE::TKGeomAlgo OpenCASCADE::TKGeomBase OpenCASCADE::TKMath OpenCASCADE::TKMesh OpenCASCADE::TKService OpenCASCADE::TKTopAlgo OpenCASCADE::TKV3d OpenCASCADE::TKOpenGl OpenCASCADE::TKIVtk VTK::IOImage VTK::ImagingCore VTK::InteractionStyle VTK::RenderingOpenGL2 VTK::RenderingGL2PSOpenGL2 OpenCASCADE::Tcl86) + + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将OpenCASCADE_FOUND变量设置为TRUE +find_package_handle_standard_args(OpenCASCADE + FOUND_VAR + OpenCASCADE_FOUND + REQUIRED_VARS + OpenCASCADE_DIRS + OpenCASCADE_INCLUDE_DIRS + OpenCASCADE_LIBRARY_DIRS + OpenCASCADE_LIBRARIES + OpenCASCADE_BINARY_DIRS + VERSION_VAR + OpenCASCADE_VERSION +) \ No newline at end of file diff --git a/cmake/FindPython.cmake b/cmake/FindPython.cmake new file mode 100644 index 0000000..ad4fbdc --- /dev/null +++ b/cmake/FindPython.cmake @@ -0,0 +1,152 @@ +# FindPython +# -------- +# +# Find the Python libraries(Only for Python provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``Python_FOUND`` True if Python found on the local system +# +# ``Python_VERSION`` Python Version(x.x.x) +# +# ``Python_VERSION_MAJOR`` Python Major Version +# +# ``Python_VERSION_MINOR`` Python Minor Version +# +# ``Python_VERSION_PATCH`` Python Patch Version +# +# ``Python_DIRS`` Location of Python(root dir) +# +# ``Python_INCLUDE_DIRS`` Location of Python header files +# +# ``Python_LIBRARY_DIRS`` Location of Python libraries +# +# ``Python_LIBRARIES`` List of the Python libraries found +# +# ``Python_EXECUTABLE`` Location of Python program +# + +# 防止重复引入 +if(FASTCAE_Python_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_Python_ALREADY_INCLUDED 1) + +set(Python_VERSION_MAJOR 3) +set(Python_VERSION_MINOR 7) +set(Python_VERSION_PATCH 0) +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(_python_h_dir "include/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}m") +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(_python_h_dir "include") +endif() + +find_path(Python_DIRS + NAMES + "${_python_h_dir}/Python.h" + PATHS + ${CMAKE_SOURCE_DIR}/extlib/Python + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +find_path(Python_INCLUDE_DIRS + NAMES + Python.h + HINTS + ${Python_DIRS}/${_python_h_dir} +) + +if(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set(Python_EXECUTABLE "${Python_DIRS}/python.exe") +else() + set(Python_EXECUTABLE "${Python_DIRS}/bin/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}") +endif() + +#[[if(EXISTS ${Python_EXECUTABLE}) + message(STATUS "Python_EXECUTABLE: ${Python_EXECUTABLE}") +else() + set(Python_EXECUTABLE "Python_EXECUTABLE-NOTFOUND") +endif()]] + +#[[execute_process( + COMMAND + ${Python_EXECUTABLE} "-c" "import sys\nprint(sys.version_info)" + RESULT_VARIABLE _status + OUTPUT_VARIABLE _version + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE +) + +function(_findPythonVersion _key _output) + # 初始化 + set(CMAKE_MATCH_1 "0") + # 定义正则 + set(_version_expr "${_key}=([0-9]+),") + # 匹配 + string(REGEX MATCH "${_version_expr}" Python_ver "${_version}") + # PARENT_SCOPE选项,意味着该变量的作用域会传递到上一层(函数的调用者) + set(${_output} "${CMAKE_MATCH_1}" PARENT_SCOPE) +endfunction(_findPythonVersion) + +_findPythonVersion("major" Python_VERSION_MAJOR) +_findPythonVersion("minor" Python_VERSION_MINOR) +_findPythonVersion("micro" Python_VERSION_PATCH)]] + +set(Python_VERSION "${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}.${Python_VERSION_PATCH}") + +find_path(Python_LIBRARY_DIRS + NAMES + python${Python_VERSION_MAJOR}${Python_VERSION_MINOR}.lib libpython${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}m.so + HINTS + ${Python_DIRS}/libs ${Python_DIRS}/lib +) + +set(Python_LIBRARIES FASTCAE::PYTHON) + +add_library(FASTCAE::PYTHON SHARED IMPORTED) + +set_property(TARGET FASTCAE::PYTHON PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Python_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::PYTHON APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + + + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + add_library(FASTCAE::FFI SHARED IMPORTED) + set_property(TARGET FASTCAE::FFI APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(FASTCAE::FFI PROPERTIES + IMPORTED_LOCATION_RELEASE "${Python_LIBRARY_DIRS}/libffi.so.8.1.0" + IMPORTED_SONAME_RELEASE "libffi.so.8" + ) + set_target_properties(FASTCAE::PYTHON PROPERTIES + IMPORTED_LOCATION_RELEASE "${Python_LIBRARY_DIRS}/libpython${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}m.so.1.0" + IMPORTED_SONAME_RELEASE "libpython${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}m.so" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties(FASTCAE::PYTHON PROPERTIES + IMPORTED_IMPLIB_RELEASE "${Python_LIBRARY_DIRS}/python${Python_VERSION_MAJOR}${Python_VERSION_MINOR}.lib" + IMPORTED_LOCATION_RELEASE "${Python_DIRS}/python${Python_VERSION_MAJOR}${Python_VERSION_MINOR}.dll" + ) +endif() + + +include(FindPackageHandleStandardArgs) +# 如果找到所有需要的变量,并且版本匹配,则将Python_FOUND变量设置为TRUE +find_package_handle_standard_args(Python + FOUND_VAR + Python_FOUND + REQUIRED_VARS + Python_DIRS + Python_INCLUDE_DIRS + Python_LIBRARY_DIRS + Python_LIBRARIES + Python_EXECUTABLE + VERSION_VAR + Python_VERSION +) \ No newline at end of file diff --git a/cmake/FindPythonModule.cmake b/cmake/FindPythonModule.cmake new file mode 100644 index 0000000..cdeda71 --- /dev/null +++ b/cmake/FindPythonModule.cmake @@ -0,0 +1,49 @@ +# Find a Python module +# Found at http://www.cmake.org/pipermail/cmake/2011-January/041666.html +# To use do: find_python_module(NumPy REQUIRED) +# Reports also version of package, but you can't currently enforce a specific version to be +# searched for... + +macro(find_python_module module) + # Fail if Python interpreter not known + if(NOT PYTHON_EXECUTABLE) + message(FATAL_ERROR "Use find_package(PythonInterp) first!") + endif() + string(TOLOWER ${module} _module_lower) + + if(NOT ${_module_lower}) + if(ARGC GREATER 1 AND ARGV1 STREQUAL "REQUIRED") + set(${module}_FIND_REQUIRED TRUE) + endif() + # Find module location + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} "-c" "import re, ${_module_lower}; print(re.compile('/__init__.py.*').sub('',${_module_lower}.__file__))" + RESULT_VARIABLE ${module}_STATUS + OUTPUT_VARIABLE ${module}_LOCATION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(NOT ${module}_STATUS) + set(${module} ${${module}_LOCATION} CACHE STRING "Location of Python module ${module}") + endif() + # Find module version + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} "-c" "import re, ${_module_lower}; print(re.compile('/__init__.py.*').sub('',${_module_lower}.__version__))" + OUTPUT_VARIABLE ${module}_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(${module} + FOUND_VAR + ${module}_FOUND + REQUIRED_VARS + ${module}_LOCATION + VERSION_VAR + ${module}_VERSION + ) +endmacro() \ No newline at end of file diff --git a/cmake/FindQuaZIP.cmake b/cmake/FindQuaZIP.cmake new file mode 100644 index 0000000..8fd4d99 --- /dev/null +++ b/cmake/FindQuaZIP.cmake @@ -0,0 +1,110 @@ +# FindQuaZIP +# -------- +# +# Find the QuaZIP libraries(Only for QuaZIP provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``QuaZIP_FOUND`` True if QuaZIP found on the local system +# +# ``QuaZIP_VERSION`` QuaZIP Version(x.x.x) +# +# ``QuaZIP_VERSION_MAJOR`` QuaZIP Major Version +# +# ``QuaZIP_VERSION_MINOR`` QuaZIP Minor Version +# +# ``QuaZIP_VERSION_PATCH`` QuaZIP Patch Version +# +# ``QuaZIP_DIRS`` Location of QuaZIP(root dir) +# +# ``QuaZIP_INCLUDE_DIRS`` Location of QuaZIP header files +# +# ``QuaZIP_LIBRARY_DIRS`` Location of QuaZIP libraries +# +# ``QuaZIP_LIBRARIES`` List of the QuaZIP libraries found +# +# ``QuaZIP_BINARY_DIRS`` Location of VTK binary +# + +# 防止重复引入 +if(FASTCAE_QuaZIP_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_QuaZIP_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(QuaZIP_DIRS + NAMES + include/quazip5/quazip.h + PATHS + ${CMAKE_SOURCE_DIR}/extlib/QuaZIP + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(QuaZIP_VERSION_MAJOR 0) +set(QuaZIP_VERSION_MINOR 7) +set(QuaZIP_VERSION_PATCH 3) + +set(QuaZIP_VERSION "${QuaZIP_VERSION_MAJOR}.${QuaZIP_VERSION_MINOR}.${QuaZIP_VERSION_PATCH}") + +find_path(QuaZIP_INCLUDE_DIRS + NAMES + quazip.h + HINTS + ${QuaZIP_DIRS}/include/quazip5 +) + +find_path(QuaZIP_LIBRARY_DIRS + NAMES + quazip5.lib libquazip5.so + HINTS + ${QuaZIP_DIRS}/lib +) + +find_path(QuaZIP_BINARY_DIRS + NAMES + quazip5.dll libquazip5.so + HINTS + ${QuaZIP_DIRS}/lib +) + +set(QuaZIP_LIBRARIES FASTCAE::QUAZIP) + +add_library(FASTCAE::QUAZIP SHARED IMPORTED) +set_property(TARGET FASTCAE::QUAZIP PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${QuaZIP_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::QUAZIP APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(FASTCAE::QUAZIP PROPERTIES + IMPORTED_LOCATION_RELEASE "${QuaZIP_LIBRARY_DIRS}/libquazip5.so.1.0.0" + IMPORTED_SONAME_RELEASE "libquazip5.so.1" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_property(TARGET FASTCAE::QUAZIP APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(FASTCAE::QUAZIP PROPERTIES + IMPORTED_IMPLIB_RELEASE "${QuaZIP_LIBRARY_DIRS}/quazip5.lib" + IMPORTED_LOCATION_RELEASE "${QuaZIP_BINARY_DIRS}/quazip5.dll" + IMPORTED_IMPLIB_DEBUG "${QuaZIP_LIBRARY_DIRS}/quazip5d.lib" + IMPORTED_LOCATION_DEBUG "${QuaZIP_BINARY_DIRS}/quazip5d.dll" + ) +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将QuaZIP_FOUND变量设置为TRUE +find_package_handle_standard_args(QuaZIP + FOUND_VAR + QuaZIP_FOUND + REQUIRED_VARS + QuaZIP_DIRS + QuaZIP_INCLUDE_DIRS + QuaZIP_LIBRARY_DIRS + QuaZIP_LIBRARIES + QuaZIP_BINARY_DIRS + VERSION_VAR + QuaZIP_VERSION +) \ No newline at end of file diff --git a/cmake/FindQwt.cmake b/cmake/FindQwt.cmake new file mode 100644 index 0000000..5a8dc3b --- /dev/null +++ b/cmake/FindQwt.cmake @@ -0,0 +1,142 @@ +# FindQwt +# -------- +# +# Find the Qwt libraries(Only for Qwt provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``Qwt_FOUND`` True if Qwt found on the local system +# +# ``Qwt_VERSION`` Qwt Version(x.x.x) +# +# ``Qwt_VERSION_MAJOR`` Qwt Major Version +# +# ``Qwt_VERSION_MINOR`` Qwt Minor Version +# +# ``Qwt_VERSION_PATCH`` Qwt Patch Version +# +# ``QwtPolar_VERSION`` QwtPolar Version(x.x.x) +# +# ``QwtPolar_VERSION_MAJOR`` QwtPolar Major Version +# +# ``QwtPolar_VERSION_MINOR`` QwtPolar Minor Version +# +# ``QwtPolar_VERSION_PATCH`` QwtPolar Patch Version +# +# ``Qwt_DIRS`` Location of Qwt(root dir) +# +# ``Qwt_INCLUDE_DIRS`` Location of Qwt(QwtPolar) header files +# +# ``Qwt_LIBRARY_DIRS`` Location of Qwt(QwtPolar) libraries +# +# ``Qwt_LIBRARIES`` List of the Qwt libraries(with QwtPolar libraries) found +# +# ``Qwt_BINARY_DIRS`` Location of VTK binary +# + +# 防止重复引入 +if(FASTCAE_Qwt_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_Qwt_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(Qwt_DIRS + NAMES + include/qwt.h + PATHS + ${CMAKE_SOURCE_DIR}/extlib/Qwt + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(Qwt_VERSION_MAJOR 6) +set(Qwt_VERSION_MINOR 1) +set(Qwt_VERSION_PATCH 6) +set(QwtPolar_VERSION_MAJOR 1) +set(QwtPolar_VERSION_MINOR 1) +set(QwtPolar_VERSION_PATCH 1) + +set(Qwt_VERSION "${Qwt_VERSION_MAJOR}.${Qwt_VERSION_MINOR}.${Qwt_VERSION_PATCH}") +set(QwtPolar_VERSION "${QwtPolar_VERSION_MAJOR}.${QwtPolar_VERSION_MINOR}.${QwtPolar_VERSION_PATCH}") + +find_path(Qwt_INCLUDE_DIRS + NAMES + qwt.h + HINTS + ${Qwt_DIRS}/include +) + +find_path(Qwt_LIBRARY_DIRS + NAMES + qwt.lib libqwt.so + HINTS + ${Qwt_DIRS}/lib +) + +find_path(Qwt_BINARY_DIRS + NAMES + qwt.dll libqwt.so + HINTS + ${Qwt_DIRS}/lib +) + +set(Qwt_LIBRARIES FASTCAE::QWT;FASTCAE::QWTPOLAR) + +add_library(FASTCAE::QWT SHARED IMPORTED) +add_library(FASTCAE::QWTPOLAR SHARED IMPORTED) +set_property(TARGET FASTCAE::QWT PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Qwt_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::QWT APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::QWT PROPERTY INTERFACE_LINK_LIBRARIES Qt5::Svg Qt5::OpenGL) +set_property(TARGET FASTCAE::QWT PROPERTY INTERFACE_COMPILE_DEFINITIONS "QWT_DLL") + +set_property(TARGET FASTCAE::QWTPOLAR PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Qwt_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::QWTPOLAR APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_property(TARGET FASTCAE::QWTPOLAR PROPERTY INTERFACE_LINK_LIBRARIES FASTCAE::QWT Qt5::PrintSupport) + + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(FASTCAE::QWT PROPERTIES + IMPORTED_LOCATION_RELEASE "${Qwt_LIBRARY_DIRS}/libqwt.so.${Qwt_VERSION_MAJOR}.${Qwt_VERSION_MINOR}.${Qwt_VERSION_PATCH}" + IMPORTED_SONAME_RELEASE "libqwt.so.${Qwt_VERSION_MAJOR}" + ) + set_target_properties(FASTCAE::QWTPOLAR PROPERTIES + IMPORTED_LOCATION_RELEASE "${Qwt_LIBRARY_DIRS}/libqwtpolar.so.${QwtPolar_VERSION_MAJOR}.${QwtPolar_VERSION_MINOR}.${QwtPolar_VERSION_PATCH}" + IMPORTED_SONAME_RELEASE "libqwtpolar.so.${QwtPolar_VERSION_MAJOR}" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_property(TARGET FASTCAE::QWT APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_property(TARGET FASTCAE::QWTPOLAR APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(FASTCAE::QWT PROPERTIES + IMPORTED_IMPLIB_RELEASE "${Qwt_LIBRARY_DIRS}/qwt.lib" + IMPORTED_LOCATION_RELEASE "${Qwt_BINARY_DIRS}/qwt.dll" + IMPORTED_IMPLIB_DEBUG "${Qwt_LIBRARY_DIRS}/qwtd.lib" + IMPORTED_LOCATION_DEBUG "${Qwt_BINARY_DIRS}/qwtd.dll" + ) + set_target_properties(FASTCAE::QWTPOLAR PROPERTIES + IMPORTED_IMPLIB_RELEASE "${Qwt_LIBRARY_DIRS}/qwtpolar.lib" + IMPORTED_LOCATION_RELEASE "${Qwt_BINARY_DIRS}/qwtpolar.dll" + IMPORTED_IMPLIB_DEBUG "${Qwt_LIBRARY_DIRS}/qwtpolard.lib" + IMPORTED_LOCATION_DEBUG "${Qwt_BINARY_DIRS}/qwtpolard.dll" + ) +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将Qwt_FOUND变量设置为TRUE +find_package_handle_standard_args(Qwt + FOUND_VAR + Qwt_FOUND + REQUIRED_VARS + Qwt_DIRS + Qwt_INCLUDE_DIRS + Qwt_LIBRARY_DIRS + Qwt_LIBRARIES + Qwt_BINARY_DIRS + VERSION_VAR + Qwt_VERSION +) \ No newline at end of file diff --git a/cmake/FindSphinx.cmake b/cmake/FindSphinx.cmake new file mode 100644 index 0000000..6edc2b3 --- /dev/null +++ b/cmake/FindSphinx.cmake @@ -0,0 +1,38 @@ +# - This module looks for Sphinx +# Find the Sphinx documentation generator +# +# This modules defines +# SPHINX_EXECUTABLE +# SPHINX_FOUND + +#============================================================================= +# Copyright 2002-2009 Kitware, Inc. +# Copyright 2009-2011 Peter Colberg +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING-CMAKE-SCRIPTS for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +find_program(SPHINX_EXECUTABLE NAMES sphinx-build + HINTS + $ENV{SPHINX_DIR} + HINTS ${SPHINX_ROOT}/bin + PATH_SUFFIXES bin + DOC "Sphinx documentation generator" +) + +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(Sphinx DEFAULT_MSG + SPHINX_EXECUTABLE +) + +mark_as_advanced( + SPHINX_EXECUTABLE +) \ No newline at end of file diff --git a/cmake/FindTecIO.cmake b/cmake/FindTecIO.cmake new file mode 100644 index 0000000..739a38d --- /dev/null +++ b/cmake/FindTecIO.cmake @@ -0,0 +1,98 @@ +# FindTecIO +# -------- +# +# Find the TecIO libraries(Only for TecIO provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``TecIO_FOUND`` True if TecIO found on the local system +# +# ``TecIO_VERSION`` TecIO Version(x.x.x) +# +# ``TecIO_VERSION_MAJOR`` TecIO Major Version +# +# ``TecIO_VERSION_MINOR`` TecIO Minor Version +# +# ``TecIO_VERSION_PATCH`` TecIO Patch Version +# +# ``TecIO_DIRS`` Location of TecIO(root dir) +# +# ``TecIO_INCLUDE_DIRS`` Location of TecIO header files +# +# ``TecIO_LIBRARY_DIRS`` Location of TecIO libraries +# +# ``TecIO_LIBRARIES`` List of the TecIO libraries found +# + +# 防止重复引入 +if(FASTCAE_TecIO_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_TecIO_ALREADY_INCLUDED 1) + +# find_path 搜索包含某个文件的路径 +# 如果在某个路径下发现了该文件,该结果会被存储到该变量中;如果没有找到,存储的结果将会是-NOTFOUND +find_path(TecIO_DIRS + NAMES + include/TECIO.h + PATHS + ${CMAKE_SOURCE_DIR}/extlib/TecIO + NO_SYSTEM_ENVIRONMENT_PATH + NO_CMAKE_SYSTEM_PATH +) + +set(TecIO_VERSION_MAJOR 1) +set(TecIO_VERSION_MINOR 4) +set(TecIO_VERSION_PATCH 2) + +set(TecIO_VERSION "${TecIO_VERSION_MAJOR}.${TecIO_VERSION_MINOR}.${TecIO_VERSION_PATCH}") + +find_path(TecIO_INCLUDE_DIRS + NAMES + TECIO.h + HINTS + ${TecIO_DIRS}/include +) + +find_path(TecIO_LIBRARY_DIRS + NAMES + tecio.lib libtecio.so + HINTS + ${TecIO_DIRS}/lib +) + +set(TecIO_LIBRARIES FASTCAE::TECIO) + +add_library(FASTCAE::TECIO SHARED IMPORTED) +set_property(TARGET FASTCAE::TECIO PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${TecIO_INCLUDE_DIRS}) +set_property(TARGET FASTCAE::TECIO APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(FASTCAE::TECIO PROPERTIES + IMPORTED_LOCATION_RELEASE "${TecIO_LIBRARY_DIRS}/libtecio.so" + #IMPORTED_SONAME_RELEASE "${TecIO_LIBRARY_DIRS}/libtecio.so" + ) +elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_target_properties(FASTCAE::TECIO PROPERTIES + IMPORTED_IMPLIB_RELEASE "${TecIO_LIBRARY_DIRS}/tecio.lib" + IMPORTED_LOCATION_RELEASE "${TecIO_DIRS}/bin/tecio.dll" + ) +endif() + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将TecIO_FOUND变量设置为TRUE +find_package_handle_standard_args(TecIO + FOUND_VAR + TecIO_FOUND + REQUIRED_VARS + TecIO_DIRS + TecIO_INCLUDE_DIRS + TecIO_LIBRARY_DIRS + TecIO_LIBRARIES + VERSION_VAR + TecIO_VERSION +) \ No newline at end of file diff --git a/cmake/FindVTK.cmake b/cmake/FindVTK.cmake new file mode 100644 index 0000000..be5bac6 --- /dev/null +++ b/cmake/FindVTK.cmake @@ -0,0 +1,215 @@ +# FindVTK +# -------- +# +# Find the VTK libraries(Only for VTK provided by FastCAE) +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# The following variables will be defined: +# +# ``VTK_FOUND`` True if VTK found on the local system +# +# ``VTK_VERSION`` VTK Version(x.x.x) +# +# ``VTK_VERSION_MAJOR`` VTK Major Version +# +# ``VTK_VERSION_MINOR`` VTK Minor Version +# +# ``VTK_VERSION_PATCH`` VTK Patch Version +# +# ``VTK_DIRS`` Location of VTK(root dir) +# +# ``VTK_INCLUDE_DIRS`` Location of VTK header files +# +# ``VTK_LIBRARY_DIRS`` Location of VTK libraries +# +# ``VTK_LIBRARIES`` List of the VTK libraries found +# +# ``VTK_BINARY_DIRS`` Location of VTK binary +# + +# 防止重复引入 +if(FASTCAE_VTK_ALREADY_INCLUDED) + return() +endif() +set(FASTCAE_VTK_ALREADY_INCLUDED 1) + +set(VTK_DIRS "${CMAKE_SOURCE_DIR}/extlib/VTK") + +set(VTK_VERSION_MAJOR 9) +set(VTK_VERSION_MINOR 0) +set(VTK_VERSION_PATCH 1) + +set(VTK_INCLUDE_DIRS "${VTK_DIRS}/include/vtk-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}") +set(VTK_LIBRARY_DIRS "${VTK_DIRS}/lib") +set(VTK_BINARY_DIRS "${VTK_DIRS}/bin") + +set(VTK_VERSION "${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.${VTK_VERSION_PATCH}") + +macro(_populate_target_properties _target) + add_library(${_target} SHARED IMPORTED) + set_property(TARGET ${_target} PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${VTK_INCLUDE_DIRS}) + set_property(TARGET ${_target} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + if(ARGC GREATER 1) + set_property(TARGET ${_target} PROPERTY INTERFACE_LINK_LIBRARIES ARGN) + endif() + string(SUBSTRING ${_target} 5 -1 _target_name) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set_target_properties(${_target} PROPERTIES + IMPORTED_LOCATION_RELEASE "${VTK_LIBRARY_DIRS}/libvtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.so.${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.${VTK_VERSION_PATCH}" + IMPORTED_SONAME_RELEASE "libvtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.so.${VTK_VERSION_PATCH}" + ) + elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") + set_property(TARGET ${_target} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(${_target} PROPERTIES + IMPORTED_IMPLIB_RELEASE "${VTK_LIBRARY_DIRS}/vtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.lib" + IMPORTED_LOCATION_RELEASE "${VTK_BINARY_DIRS}/vtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}.dll" + IMPORTED_IMPLIB_DEBUG "${VTK_LIBRARY_DIRS}/vtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}d.lib" + IMPORTED_LOCATION_DEBUG "${VTK_BINARY_DIRS}/vtk${_target_name}-${VTK_VERSION_MAJOR}.${VTK_VERSION_MINOR}d.dll" + ) + endif() +endmacro() + +set(VTK_LIBRARIES VTK::ChartsCore;VTK::CommonColor;VTK::CommonComputationalGeometry;VTK::CommonCore;VTK::CommonDataModel;VTK::CommonExecutionModel;VTK::CommonMath;VTK::CommonMisc;VTK::CommonSystem;VTK::CommonTransforms;VTK::DomainsChemistry;VTK::FiltersAMR;VTK::FiltersCore;VTK::FiltersExtraction;VTK::FiltersFlowPaths;VTK::FiltersGeneral;VTK::FiltersGeneric;VTK::FiltersGeometry;VTK::FiltersHybrid;VTK::FiltersHyperTree;VTK::FiltersImaging;VTK::FiltersModeling;VTK::FiltersParallel;VTK::FiltersParallelImaging;VTK::FiltersPoints;VTK::FiltersProgrammable;VTK::FiltersSelection;VTK::FiltersSMP;VTK::FiltersSources;VTK::FiltersStatistics;VTK::FiltersTexture;VTK::FiltersTopology;VTK::FiltersVerdict;VTK::GeovisCore;VTK::GUISupportQt;VTK::GUISupportQtSQL;VTK::ImagingColor;VTK::ImagingCore;VTK::ImagingFourier;VTK::ImagingGeneral;VTK::ImagingHybrid;VTK::ImagingMath;VTK::ImagingMorphological;VTK::ImagingSources;VTK::ImagingStatistics;VTK::ImagingStencil;VTK::InfovisCore;VTK::InfovisLayout;VTK::InteractionImage;VTK::InteractionStyle;VTK::InteractionWidgets;VTK::IOAsynchronous;VTK::IOCityGML;VTK::IOCore;VTK::IOEnSight;VTK::IOExport;VTK::IOExportGL2PS;VTK::IOExportPDF;VTK::IOGeometry;VTK::IOImage;VTK::IOImport;VTK::IOInfovis;VTK::IOLegacy;VTK::IOLSDyna;VTK::IOMotionFX;VTK::IOMovie;VTK::IOOggTheora;VTK::IOParallel;VTK::IOParallelXML;VTK::IOPLY;VTK::IOSegY;VTK::IOSQL;VTK::IOTecplotTable;VTK::IOVideo;VTK::IOXML;VTK::IOXMLParser;VTK::ParallelCore;VTK::ParallelDIY;VTK::RenderingAnnotation;VTK::RenderingContext2D;VTK::RenderingCore;VTK::RenderingFreeType;VTK::RenderingGL2PSOpenGL2;VTK::RenderingImage;VTK::RenderingLabel;VTK::RenderingLOD;VTK::RenderingOpenGL2;VTK::RenderingQt;VTK::RenderingSceneGraph;VTK::RenderingUI;VTK::RenderingVolume;VTK::RenderingVolumeOpenGL2;VTK::RenderingVtkJS;VTK::TestingRendering;VTK::doubleconversion;VTK::expat;VTK::freetype;VTK::gl2ps;VTK::glew;VTK::jpeg;VTK::jsoncpp;VTK::libharu;VTK::libproj;VTK::libxml2;VTK::loguru;VTK::lz4;VTK::lzma;VTK::ogg;VTK::png;VTK::pugixml;VTK::sqlite;VTK::theora;VTK::tiff;VTK::verdict;VTK::zlib;VTK::DICOMParser;VTK::sys;VTK::metaio;VTK::ViewsContext2D;VTK::ViewsCore;VTK::ViewsInfovis;VTK::ViewsQt;VTK::WrappingTools) + +_populate_target_properties(VTK::ChartsCore VTK::CommonCore VTK::CommonDataModel VTK::FiltersGeneral VTK::RenderingContext2D VTK::RenderingCore VTK::sys VTK::CommonColor VTK::CommonExecutionModel VTK::CommonTransforms VTK::InfovisCore) +_populate_target_properties(VTK::CommonColor VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::CommonCore VTK::sys) +_populate_target_properties(VTK::CommonDataModel VTK::CommonCore VTK::CommonMath VTK::CommonTransforms VTK::CommonMisc VTK::CommonSystem VTK::sys) +_populate_target_properties(VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::CommonMisc VTK::CommonSystem) +_populate_target_properties(VTK::CommonMath VTK::CommonCore) +_populate_target_properties(VTK::CommonMisc VTK::CommonCore VTK::CommonMath VTK::sys) +_populate_target_properties(VTK::CommonSystem VTK::CommonCore VTK::sys) +_populate_target_properties(VTK::CommonTransforms VTK::CommonCore VTK::CommonMath VTK::sys) +_populate_target_properties(VTK::DomainsChemistry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::IOLegacy VTK::IOXMLParser VTK::RenderingCore VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral VTK::FiltersSources VTK::sys) +_populate_target_properties(VTK::FiltersAMR VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonCore VTK::CommonMath VTK::CommonSystem VTK::FiltersCore VTK::IOXML VTK::ParallelCore) +_populate_target_properties(VTK::FiltersCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMisc VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::sys) +_populate_target_properties(VTK::FiltersExtraction VTK::CommonCore VTK::CommonExecutionModel VTK::FiltersGeneral VTK::CommonDataModel VTK::FiltersCore VTK::FiltersStatistics VTK::ParallelDIY) +_populate_target_properties(VTK::FiltersFlowPaths VTK::CommonCore VTK::CommonComputationalGeometry VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::FiltersCore VTK::FiltersGeometry VTK::FiltersSources VTK::IOCore) +_populate_target_properties(VTK::FiltersGeneral VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMisc VTK::FiltersCore VTK::CommonComputationalGeometry VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms) +_populate_target_properties(VTK::FiltersGeneric VTK::CommonExecutionModel VTK::CommonMath VTK::CommonCore VTK::CommonDataModel VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersSources) +_populate_target_properties(VTK::FiltersGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::FiltersCore VTK::sys) +_populate_target_properties(VTK::FiltersHybrid VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonTransforms VTK::FiltersGeometry VTK::CommonMath VTK::CommonMisc VTK::FiltersCore VTK::FiltersGeneral VTK::ImagingCore VTK::ImagingSources VTK::RenderingCore VTK::sys) +_populate_target_properties(VTK::FiltersHyperTree VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMisc VTK::FiltersCore VTK::FiltersGeneral VTK::CommonCore VTK::CommonSystem) +_populate_target_properties(VTK::FiltersImaging VTK::CommonCore VTK::CommonExecutionModel VTK::FiltersStatistics VTK::CommonDataModel VTK::CommonSystem VTK::ImagingGeneral) +_populate_target_properties(VTK::FiltersModeling VTK::CommonExecutionModel VTK::CommonMisc VTK::FiltersGeneral VTK::CommonCore VTK::CommonDataModel VTK::CommonTransforms VTK::FiltersCore VTK::FiltersSources) +_populate_target_properties(VTK::FiltersParallel VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersHybrid VTK::FiltersModeling VTK::FiltersSources VTK::FiltersTexture VTK::CommonSystem VTK::CommonTransforms VTK::IOLegacy VTK::ParallelCore) +_populate_target_properties(VTK::FiltersParallelImaging VTK::CommonExecutionModel VTK::FiltersImaging VTK::FiltersParallel VTK::ImagingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonSystem VTK::FiltersExtraction VTK::FiltersStatistics VTK::ImagingGeneral VTK::ParallelCore) +_populate_target_properties(VTK::FiltersPoints VTK::CommonCore VTK::CommonExecutionModel VTK::CommonMisc VTK::FiltersModeling) +_populate_target_properties(VTK::FiltersProgrammable VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::CommonTransforms) +_populate_target_properties(VTK::FiltersSelection VTK::CommonCore VTK::CommonExecutionModel VTK::CommonDataModel) +_populate_target_properties(VTK::FiltersSMP VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMisc VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral VTK::CommonMath VTK::CommonSystem) +_populate_target_properties(VTK::FiltersSources VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral) +_populate_target_properties(VTK::FiltersStatistics VTK::CommonCore VTK::CommonExecutionModel VTK::CommonDataModel VTK::CommonMisc VTK::ImagingFourier) +_populate_target_properties(VTK::FiltersTexture VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::CommonTransforms VTK::FiltersGeneral) +_populate_target_properties(VTK::FiltersTopology VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel) +_populate_target_properties(VTK::FiltersVerdict VTK::CommonExecutionModel VTK::verdict VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::GeovisCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonTransforms VTK::InfovisCore VTK::InteractionStyle VTK::InteractionWidgets VTK::RenderingCore VTK::ViewsCore VTK::libproj VTK::CommonSystem VTK::FiltersCore VTK::FiltersGeneral VTK::IOImage VTK::IOXML VTK::ImagingCore VTK::ImagingSources VTK::InfovisLayout) +_populate_target_properties(VTK::GUISupportQt VTK::CommonCore VTK::RenderingCore VTK::RenderingOpenGL2 VTK::InteractionWidgets VTK::CommonDataModel VTK::FiltersExtraction VTK::InteractionStyle) +_populate_target_properties(VTK::GUISupportQtSQL VTK::CommonCore VTK::GUISupportQt VTK::IOSQL VTK::sys) +_populate_target_properties(VTK::ImagingColor VTK::CommonExecutionModel VTK::ImagingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonSystem) +_populate_target_properties(VTK::ImagingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonTransforms) +_populate_target_properties(VTK::ImagingFourier VTK::CommonCore VTK::CommonExecutionModel VTK::ImagingCore VTK::CommonDataModel VTK::sys) +_populate_target_properties(VTK::ImagingGeneral VTK::CommonExecutionModel VTK::ImagingCore VTK::CommonCore VTK::CommonDataModel VTK::ImagingSources) +_populate_target_properties(VTK::ImagingHybrid VTK::CommonCore VTK::CommonExecutionModel VTK::CommonDataModel VTK::IOImage VTK::ImagingCore) +_populate_target_properties(VTK::ImagingMath VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::ImagingMorphological VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::ImagingCore VTK::ImagingGeneral VTK::ImagingSources) +_populate_target_properties(VTK::ImagingSources VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::ImagingCore) +_populate_target_properties(VTK::ImagingStatistics VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::ImagingCore) +_populate_target_properties(VTK::ImagingStencil VTK::CommonExecutionModel VTK::ImagingCore VTK::CommonComputationalGeometry VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::InfovisCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonColor VTK::IOImage VTK::ImagingCore VTK::ImagingSources VTK::RenderingFreeType VTK::FiltersExtraction VTK::FiltersGeneral) +_populate_target_properties(VTK::InfovisLayout VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonComputationalGeometry VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral VTK::FiltersModeling VTK::FiltersSources VTK::ImagingHybrid VTK::InfovisCore) +_populate_target_properties(VTK::InteractionImage VTK::CommonCore VTK::RenderingCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::ImagingColor VTK::ImagingCore VTK::InteractionStyle VTK::InteractionWidgets) +_populate_target_properties(VTK::InteractionStyle VTK::CommonDataModel VTK::RenderingCore VTK::CommonCore VTK::CommonMath VTK::CommonTransforms VTK::FiltersExtraction VTK::FiltersSources) +_populate_target_properties(VTK::InteractionWidgets VTK::CommonCore VTK::CommonExecutionModel VTK::FiltersGeneral VTK::FiltersSources VTK::RenderingCore VTK::CommonComputationalGeometry VTK::CommonDataModel VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersHybrid VTK::FiltersModeling VTK::ImagingColor VTK::ImagingCore VTK::ImagingGeneral VTK::ImagingHybrid VTK::InteractionStyle VTK::RenderingAnnotation VTK::RenderingFreeType VTK::RenderingVolume) +_populate_target_properties(VTK::IOAsynchronous VTK::CommonCore VTK::CommonExecutionModel VTK::IOCore VTK::IOImage VTK::IOXML VTK::CommonDataModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::ParallelCore) +_populate_target_properties(VTK::IOCityGML VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::FiltersGeneral VTK::FiltersModeling VTK::pugixml VTK::sys) +_populate_target_properties(VTK::IOCore VTK::CommonCore VTK::CommonExecutionModel VTK::CommonDataModel VTK::CommonMisc VTK::doubleconversion VTK::lz4 VTK::lzma VTK::sys VTK::zlib) +_populate_target_properties(VTK::IOEnSight VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel) +_populate_target_properties(VTK::IOExport VTK::CommonCore VTK::IOCore VTK::IOImage VTK::IOXML VTK::RenderingContext2D VTK::RenderingCore VTK::RenderingFreeType VTK::RenderingVtkJS VTK::CommonDataModel VTK::CommonMath VTK::CommonTransforms VTK::FiltersGeometry VTK::IOImage VTK::ImagingCore VTK::jsoncpp VTK::libharu) +_populate_target_properties(VTK::IOExportGL2PS VTK::IOExport VTK::RenderingGL2PSOpenGL2 VTK::CommonCore VTK::CommonDataModel VTK::ImagingCore VTK::RenderingCore VTK::gl2ps) +_populate_target_properties(VTK::IOExportPDF VTK::IOExport VTK::RenderingContext2D VTK::CommonCore VTK::ImagingCore VTK::libharu) +_populate_target_properties(VTK::IOGeometry VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::IOCore VTK::IOLegacy VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::FiltersGeneral VTK::FiltersHybrid VTK::ImagingCore VTK::IOImage VTK::RenderingCore VTK::jsoncpp VTK::sys VTK::zlib) +_populate_target_properties(VTK::IOImage VTK::CommonCore VTK::CommonExecutionModel VTK::ImagingCore VTK::CommonDataModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::DICOMParser VTK::jpeg VTK::metaio VTK::png VTK::pugixml VTK::tiff VTK::sys VTK::zlib) +_populate_target_properties(VTK::IOImport VTK::CommonCore VTK::CommonExecutionModel VTK::CommonMisc VTK::RenderingCore VTK::sys VTK::CommonDataModel VTK::CommonTransforms VTK::FiltersCore VTK::FiltersSources VTK::ImagingCore VTK::IOGeometry VTK::IOImage VTK::jsoncpp) +_populate_target_properties(VTK::IOInfovis VTK::CommonCore VTK::CommonExecutionModel VTK::IOLegacy VTK::IOXML VTK::CommonDataModel VTK::CommonMisc VTK::IOCore VTK::IOXMLParser VTK::InfovisCore VTK::libxml2 VTK::sys) +_populate_target_properties(VTK::IOLegacy VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::IOCore VTK::CommonMisc VTK::sys) +_populate_target_properties(VTK::IOLSDyna VTK::CommonCore VTK::CommonExecutionModel VTK::IOXMLParser VTK::CommonDataModel VTK::sys) +_populate_target_properties(VTK::IOMotionFX VTK::CommonExecutionModel VTK::CommonDataModel VTK::CommonMisc VTK::IOGeometry VTK::sys) +_populate_target_properties(VTK::IOMovie VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::CommonMisc VTK::CommonSystem) +_populate_target_properties(VTK::IOOggTheora VTK::CommonExecutionModel VTK::IOMovie VTK::CommonCore VTK::CommonDataModel VTK::CommonMisc VTK::CommonSystem VTK::theora) +_populate_target_properties(VTK::IOParallel VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::IOCore VTK::IOGeometry VTK::IOImage VTK::IOLegacy VTK::jsoncpp VTK::CommonMisc VTK::CommonSystem VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersParallel VTK::ParallelCore VTK::sys) +_populate_target_properties(VTK::IOParallelXML VTK::IOXML VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMisc VTK::ParallelCore VTK::sys) +_populate_target_properties(VTK::IOPLY VTK::CommonCore VTK::IOCore VTK::CommonDataModel VTK::CommonMisc VTK::sys) +_populate_target_properties(VTK::IOSegY VTK::CommonDataModel VTK::CommonExecutionModel VTK::IOImage VTK::CommonCore) +_populate_target_properties(VTK::IOSQL VTK::CommonCore VTK::CommonExecutionModel VTK::IOCore VTK::sqlite VTK::sys) +_populate_target_properties(VTK::IOTecplotTable VTK::CommonCore VTK::CommonExecutionModel VTK::CommonDataModel VTK::IOCore VTK::sys) +_populate_target_properties(VTK::IOVideo VTK::CommonExecutionModel VTK::CommonCore VTK::CommonDataModel VTK::CommonSystem VTK::sys) +_populate_target_properties(VTK::IOXML VTK::CommonCore VTK::CommonExecutionModel VTK::IOXMLParser VTK::CommonDataModel VTK::CommonMisc VTK::CommonSystem VTK::IOCore VTK::sys) +_populate_target_properties(VTK::IOXMLParser VTK::CommonCore VTK::CommonDataModel VTK::IOCore VTK::expat VTK::sys) +_populate_target_properties(VTK::ParallelCore VTK::CommonCore VTK::CommonDataModel VTK::CommonSystem VTK::IOLegacy VTK::sys) +_populate_target_properties(VTK::ParallelDIY VTK::CommonCore VTK::CommonDataModel VTK::ParallelCore VTK::FiltersGeneral VTK::IOXML) +_populate_target_properties(VTK::RenderingAnnotation VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::RenderingCore VTK::CommonMath VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral VTK::FiltersSources VTK::ImagingColor VTK::RenderingFreeType) +_populate_target_properties(VTK::RenderingContext2D VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::RenderingCore VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::FiltersGeneral VTK::RenderingFreeType) +_populate_target_properties(VTK::RenderingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::FiltersCore VTK::CommonColor VTK::CommonComputationalGeometry VTK::CommonSystem VTK::CommonTransforms VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersSources VTK::sys) +_populate_target_properties(VTK::RenderingFreeType VTK::CommonCore VTK::CommonExecutionModel VTK::RenderingCore VTK::freetype VTK::CommonDataModel VTK::FiltersGeneral) +_populate_target_properties(VTK::RenderingGL2PSOpenGL2 VTK::RenderingOpenGL2 VTK::CommonCore VTK::CommonDataModel VTK::CommonMath VTK::RenderingCore VTK::RenderingOpenGL2 VTK::gl2ps) +_populate_target_properties(VTK::RenderingImage VTK::CommonExecutionModel VTK::RenderingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonMath VTK::CommonTransforms VTK::ImagingCore) +_populate_target_properties(VTK::RenderingLabel VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::RenderingCore VTK::RenderingFreeType VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::FiltersGeneral) +_populate_target_properties(VTK::RenderingLOD VTK::RenderingCore VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonMath VTK::CommonSystem VTK::FiltersCore VTK::FiltersModeling) +_populate_target_properties(VTK::RenderingOpenGL2 VTK::CommonCore VTK::CommonDataModel VTK::RenderingCore VTK::RenderingUI VTK::glew VTK::CommonExecutionModel VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::sys) +_populate_target_properties(VTK::RenderingQt VTK::CommonCore VTK::CommonExecutionModel VTK::RenderingCore VTK::RenderingLabel VTK::CommonDataModel VTK::CommonSystem VTK::FiltersSources VTK::FiltersTexture VTK::GUISupportQt) +_populate_target_properties(VTK::RenderingSceneGraph VTK::CommonCore VTK::CommonDataModel VTK::CommonMath VTK::RenderingCore) +_populate_target_properties(VTK::RenderingUI VTK::RenderingCore) +_populate_target_properties(VTK::RenderingVolume VTK::CommonCore VTK::CommonExecutionModel VTK::RenderingCore VTK::CommonDataModel VTK::CommonMath VTK::CommonMisc VTK::CommonSystem VTK::CommonTransforms VTK::ImagingCore) +_populate_target_properties(VTK::RenderingVolumeOpenGL2 VTK::CommonCore VTK::CommonDataModel VTK::ImagingCore VTK::ImagingMath VTK::RenderingCore VTK::RenderingOpenGL2 VTK::RenderingVolume VTK::CommonMath VTK::CommonSystem VTK::CommonTransforms VTK::FiltersCore VTK::FiltersGeneral VTK::FiltersSources VTK::glew VTK::sys) +_populate_target_properties(VTK::RenderingVtkJS VTK::CommonCore VTK::RenderingSceneGraph VTK::jsoncpp VTK::CommonDataModel VTK::CommonExecutionModel VTK::RenderingCore) +_populate_target_properties(VTK::TestingRendering VTK::CommonCore VTK::RenderingCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::CommonSystem VTK::IOImage VTK::ImagingCore VTK::sys) +_populate_target_properties(VTK::doubleconversion) +_populate_target_properties(VTK::expat) +_populate_target_properties(VTK::freetype VTK::zlib) +_populate_target_properties(VTK::gl2ps VTK::png VTK::zlib) +_populate_target_properties(VTK::glew) +_populate_target_properties(VTK::jpeg) +_populate_target_properties(VTK::jsoncpp) +_populate_target_properties(VTK::libharu VTK::png VTK::zlib) +_populate_target_properties(VTK::libproj) +_populate_target_properties(VTK::libxml2 VTK::zlib) +_populate_target_properties(VTK::loguru) +_populate_target_properties(VTK::lz4) +_populate_target_properties(VTK::lzma) +_populate_target_properties(VTK::ogg) +_populate_target_properties(VTK::png VTK::zlib) +_populate_target_properties(VTK::pugixml) +_populate_target_properties(VTK::sqlite) +_populate_target_properties(VTK::theora VTK::ogg) +_populate_target_properties(VTK::tiff VTK::jpeg VTK::zlib) +_populate_target_properties(VTK::verdict) +_populate_target_properties(VTK::zlib) +_populate_target_properties(VTK::DICOMParser VTK::sys) +_populate_target_properties(VTK::sys) +_populate_target_properties(VTK::metaio VTK::zlib) +_populate_target_properties(VTK::ViewsContext2D VTK::CommonCore VTK::RenderingCore VTK::ViewsCore VTK::RenderingContext2D) +_populate_target_properties(VTK::ViewsCore VTK::CommonCore VTK::CommonExecutionModel VTK::InteractionWidgets VTK::CommonDataModel VTK::FiltersGeneral VTK::RenderingCore VTK::RenderingUI) +_populate_target_properties(VTK::ViewsInfovis VTK::CommonCore VTK::CommonDataModel VTK::CommonExecutionModel VTK::InteractionStyle VTK::RenderingContext2D VTK::ViewsCore VTK::ChartsCore VTK::CommonColor VTK::CommonTransforms VTK::FiltersCore VTK::FiltersExtraction VTK::FiltersGeneral VTK::FiltersGeometry VTK::FiltersImaging VTK::FiltersModeling VTK::FiltersSources VTK::FiltersStatistics VTK::ImagingGeneral VTK::InfovisCore VTK::InfovisLayout VTK::InteractionWidgets VTK::RenderingAnnotation VTK::RenderingCore VTK::RenderingLabel) +_populate_target_properties(VTK::ViewsQt VTK::CommonCore VTK::GUISupportQt VTK::ViewsCore VTK::ViewsInfovis VTK::CommonDataModel VTK::CommonExecutionModel VTK::FiltersExtraction VTK::FiltersGeneral VTK::InfovisCore) +_populate_target_properties(VTK::WrappingTools) + + +include(FindPackageHandleStandardArgs) + +# 如果找到所有需要的变量,并且版本匹配,则将VTK_FOUND变量设置为TRUE +find_package_handle_standard_args(VTK + FOUND_VAR + VTK_FOUND + REQUIRED_VARS + VTK_DIRS + VTK_INCLUDE_DIRS + VTK_LIBRARY_DIRS + VTK_LIBRARIES + VTK_BINARY_DIRS + VERSION_VAR + VTK_VERSION +) \ No newline at end of file diff --git a/cmake/InitRuntime.cmake b/cmake/InitRuntime.cmake new file mode 100644 index 0000000..980b8c8 --- /dev/null +++ b/cmake/InitRuntime.cmake @@ -0,0 +1,129 @@ +if(FASTCAE_ENABLE_DEV) + + if(FASTCAE_WIN) + if(NOT EXISTS "$/FastCAE.ini") + get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) + get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + + foreach(_lib ${FastCAE_Runtimes_Libraries}) + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + $ + $ + ) + endforeach() + + # 在windows环境需要拷贝所有依赖库的dll到构建目录 + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + #[[COMMAND ${CMAKE_COMMAND} -E copy + $ + $ + COMMAND_EXPAND_LISTS]] + + COMMAND ${CMAKE_COMMAND} -E copy + # 拷贝Gmsh执行程序 + ${Gmsh_EXECUTABLE} + $ + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝python的Lib文件夹 + ${Python_DIRS}/Lib + $/Lib + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝python的DLLs文件夹 + ${Python_DIRS}/DLLs + $/DLLs + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝Qt图片格式支持文件 + ${_qt_bin_dir}/../plugins/imageformats + $/imageformats + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝Qt平台支持文件 + ${_qt_bin_dir}/../plugins/platforms + $/platforms + ) + endif() + else() + if(NOT EXISTS "$/FastCAE.ini") + get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) + get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) + + foreach(_lib ${FastCAE_Runtimes_Libraries}) + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + $ + $ + $ + ) + endforeach() + + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + + COMMAND ${CMAKE_COMMAND} -E copy + ${Gmsh_EXECUTABLE} + $ + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝python的python3.7文件夹 + ${Python_DIRS}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR} + $/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR} + + COMMAND ${CMAKE_COMMAND} -E copy_directory + # 拷贝Qt图片格式支持文件 + ${_qt_bin_dir}/../plugins/imageformats + $/imageformats + + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${_qt_bin_dir}/../plugins/platforms + $/platforms + + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${_qt_bin_dir}/../plugins/platforminputcontexts + $/platforminputcontexts + + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${_qt_bin_dir}/../plugins/xcbglintegrations + $/xcbglintegrations + + COMMAND ${CMAKE_COMMAND} -E copy + $ + $ + $ + ) + + file( + COPY + # 拷贝Qt多国语言支持文件 + ${_qt_bin_dir}/../lib + DESTINATION ${DEVRUNTIME_LIBDIR}/.. + USE_SOURCE_PERMISSIONS + FILES_MATCHING + PATTERN "cmake*" EXCLUDE + PATTERN "pkgconfig*" EXCLUDE + PATTERN "libicu*.so*" + ) + + endif() + endif() + + # FastCAE的配置文件,python脚本,有可能会修改,每次构建都会拷贝 + add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/FastCAE.ini + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/CAD.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Case.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/ControlPanel.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Geometry.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/MainWindow.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Material.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Mesh.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Mesher.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/Post.py + ${CMAKE_SOURCE_DIR}/src/PythonModule/py/PostProcess.py + $ + ) + +endif() diff --git a/cmake/UseDoxygen.cmake b/cmake/UseDoxygen.cmake new file mode 100644 index 0000000..5c05cc4 --- /dev/null +++ b/cmake/UseDoxygen.cmake @@ -0,0 +1,29 @@ +macro(buildDoxygenDoc) +if (DOXYGEN_FOUND) + # set input and output files + set(DOXYGEN_IN ${CMAKE_SOURCE_DIR}/docs/Doxyfile.in) + set(DOXYGEN_OUT ${CMAKE_BINARY_DIR}/Documentation/Doxygen/Doxyfile) + + # request to configure the file + configure_file( + ${DOXYGEN_IN} + ${DOXYGEN_OUT} + @ONLY + ) + + # note the option ALL which allows to build the docs together with the application + add_custom_target(Doxygen ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/Documentation/Doxygen + COMMENT "Generating API documentation(html) with Doxygen" + VERBATIM ) + set_target_properties(Doxygen + PROPERTIES + FOLDER Documentation + ) +else (DOXYGEN_FOUND) + message("Doxygen need to be installed to generate the doxygen documentation") +endif (DOXYGEN_FOUND) +endmacro() + +buildDoxygenDoc() \ No newline at end of file diff --git a/cmake/UseSphinx.cmake b/cmake/UseSphinx.cmake new file mode 100644 index 0000000..eb923d2 --- /dev/null +++ b/cmake/UseSphinx.cmake @@ -0,0 +1,34 @@ +macro(buildSphinxDoc) +if(DOXYGEN_FOUND AND breathe_FOUND) + + set(SPHINX_IN ${CMAKE_SOURCE_DIR}/docs/conf.py.in) + set(SPHINX_OUT ${CMAKE_BINARY_DIR}/Documentation/Sphinx/_build/conf.py) + + # BREATHE_DOC_CONF_FILE中的Sphinx模板文件,会通过conf.py配置到的BREATHE_DOC_BUILD_DIR目录下 + configure_file( + ${SPHINX_IN} + ${SPHINX_OUT} + @ONLY + ) + + # note the option ALL which allows to build the docs together with the application + add_custom_target(Sphinx ALL + COMMAND + ${SPHINX_EXECUTABLE} + -q + -b html + -c ${CMAKE_BINARY_DIR}/Documentation/Sphinx/_build + ${CMAKE_SOURCE_DIR}/docs + ${CMAKE_BINARY_DIR}/Documentation/Sphinx/html + COMMENT + "Building Sphinx documentation with Breathe, Sphinx and Doxygen" + VERBATIM + ) + set_target_properties(Sphinx + PROPERTIES + FOLDER Documentation + ) +endif() +endmacro() + +buildSphinxDoc() diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in new file mode 100644 index 0000000..c7a4a32 --- /dev/null +++ b/docs/Doxyfile.in @@ -0,0 +1,2621 @@ +# Doxyfile 1.9.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = @PROJECT_NAME@ + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = @PROJECT_DESCRIPTION@ + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = http://www.fastcae.com/static/images/logo.png + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = Chinese + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# By default Python docstrings are displayed as preformatted text and doxygen's +# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the +# doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as doxygen documentation. +# The default value is: YES. + +PYTHON_DOCSTRING = YES + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. When specifying no_extension you should add +# * to the FILE_PATTERNS. +# +# Note see also the list of default file extension mappings. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use +# during processing. When set to 0 doxygen will based this on the number of +# cores available in the system. You can set it explicitly to a value larger +# than 0 to get more control over the balance between CPU load and processing +# speed. At this moment only the input processing can be done using multiple +# threads. Since this is still an experimental feature the default is set to 1, +# which efficively disables parallel processing. Please report any issues you +# encounter. Generating dot graphs in parallel is controlled by the +# DOT_NUM_THREADS setting. +# Minimum value: 0, maximum value: 32, default value: 1. + +NUM_PROC_THREADS = 1 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = YES + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = YES + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = YES + +# If this flag is set to YES, the name of an unnamed parameter in a declaration +# will be determined by the corresponding definition. By default unnamed +# parameters remain unnamed in the output. +# The default value is: YES. + +RESOLVE_UNNAMED_PARAMS = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# able to match the capabilities of the underlying filesystem. In case the +# filesystem is case sensitive (i.e. it supports files in the same directory +# whose names only differ in casing), the option must be set to YES to properly +# deal with such files in case they appear in the input. For filesystems that +# are not case sensitive the option should be be set to NO to properly deal with +# output files written for symbols that only differ in casing, such as for two +# classes, one named CLASS and the other named Class, and to also support +# references to files without having to specify the exact matching casing. On +# Windows (including Cygwin) and MacOS, users should typically set this option +# to NO, whereas on Linux or other Unix flavors it should typically be set to +# YES. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = YES + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = YES + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS +# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the doxygen process doxygen will return with a non-zero status. +# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = @PROJECT_SOURCE_DIR@/src + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: +# https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# Note the list of default checked file patterns might differ from the list of +# default file extension mappings. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, +# *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.cpp \ + *.h \ + *.hxx \ + *.hpp + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */P*/* \ + */Q*/* \ + */IO/rapidjson/* \ + */IO/rapidxml/* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: +# http://clang.llvm.org/) for more accurate parsing at the cost of reduced +# performance. This can be particularly helpful with template rich C++ code for +# which doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to +# YES then doxygen will add the directory of each input to the include path. +# The default value is: YES. + +CLANG_ADD_INC_PATHS = YES + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the directory containing a file called compile_commands.json. This +# file is the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the +# options used when the source files were built. This is equivalent to +# specifying the -p option to a clang tool, such as clang-check. These options +# will then be passed to the parser. Any options specified with CLANG_OPTIONS +# will be added as well. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: +# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To +# create a documentation set, doxygen will generate a Makefile in the HTML +# output directory. Running make will produce the docset in that directory and +# running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: +# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the main .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location (absolute path +# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# run qhelpgenerator on the generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png (the default) and svg (looks nicer but requires the +# pdf2svg or inkscape tool). +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: +# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /