#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # PPPPP H H EEEEE N N GGGGG L EEEEE III + # P P H H E NN N G L E I + # PPPPP HHHHH EEEEE N N N G GG L EEEEE I + # P H H E N N N G G L E I + # P H H EEEEE N N GGGGG LLLLL EEEEE III + #------------------------------------------------------------------------+ # Platform for Hybrid Engineering Simulation of Flows + # China Aerodynamics Research and Development Center + # (C) Copyright, Since 2010 + #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #! @file CMakeLists.txt #! @brief It defines the project. #! @author Bell, Xu Qingxin, He Kun, He Xin. cmake_minimum_required(VERSION 2.6) #set cmake environment: set(CMAKE_USE_RELATIVE_PATHS ON) #output message: message(STATUS "Welcome to Build Project ${CMAKE_PROJECT_NAME}.") message(STATUS "The OS is ${CMAKE_SYSTEM_NAME}, version ${CMAKE_SYSTEM_VERSION}.") message(STATUS "The working directory is ${CMAKE_BINARY_DIR}/${EXEC_WORKING_DIR}/${DLL_WORKING_DIR}.") message(STATUS "--- Start to call ${CMAKE_CURRENT_LIST_FILE} ---") message(STATUS "This current binary directory is ${CMAKE_CURRENT_BINARY_DIR}.") message(STATUS "This current source directory is ${CMAKE_CURRENT_SOURCE_DIR}.") # Define some pre-definition. include(${PROJECT_SOURCE_DIR}/../PHengLEI/PHMacro.cmake) if(USE_OCC) message(STATUS "USE_OCC is turned on!") add_definitions(-DUSE_OCC) endif() if(USE_DOUBLE_PRECISION) message(STATUS "USE_DOUBLE_PRECISION is turned on!") add_definitions(-DPH_DOUBLE_PREC) endif() if(USE_SMARTARRAY) message(STATUS "USE_SMARTARRAY is turned on!") add_definitions(-DUSE_SMARTARRAY) endif() #1. output message: message(STATUS "") message(STATUS "--- Enter subdirectory , Start to call ${CMAKE_CURRENT_LIST_FILE} ---") message(STATUS "This current binary directory is ${CMAKE_CURRENT_BINARY_DIR}.") message(STATUS "This current source directory is ${CMAKE_CURRENT_SOURCE_DIR}.") set(API_TARGET_NAME "PHAPI") set(LIBRARY_OUTPUT_PATH) if(WIN32) if(CMAKE_CL_64) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-x64/${CMAKE_BUILD_TYPE}) set(CMAKE_EXE_LINKER_FLAGS "/machine:x64") message(STATUS "USE_Windows_X64 is turned on!") add_definitions(-DUSE_WINDOWS_X64) else(CMAKE_CL_64) message(STATUS "Windows_X86 is turned on!") set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-x86/${CMAKE_BUILD_TYPE}) endif(CMAKE_CL_64) else(WIN32) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../API/bin/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}) endif(WIN32) message(STATUS "API library path is: ${LIBRARY_OUTPUT_PATH}.") #set options if(NOT BUILD_LIBRARY_TYPE) set (BUILD_LIBRARY_TYPE "Static" CACHE STRING "The type of PHengLEI libraries" FORCE) SET_PROPERTY(CACHE BUILD_LIBRARY_TYPE PROPERTY STRINGS Shared Static) endif() #3. set environment for MPICH and 3rdParty lib directory: if(WIN32) include_directories("${MSMPI_HOME_DIRECTORY}/Include") link_directories("${MSMPI_HOME_DIRECTORY}/lib") if(CMAKE_CL_64) link_directories("${MSMPI_HOME_DIRECTORY}/Lib/x64") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/${THIRD_PARTY_COMPILER_FLAG}/win-x64") else(CMAKE_CL_64) link_directories("${MSMPI_HOME_DIRECTORY}/Lib/x86") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/${THIRD_PARTY_COMPILER_FLAG}/win-x86") endif(CMAKE_CL_64) else(WIN32) set(CMAKE_CXX_COMPILER mpicxx) set(CMAKE_C_COMPILER mpicc) if(${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR} MATCHES "Linux-x86_64") if(USE_INTEL_COMPILER) set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/intel") message(STATUS "USE_INTEL_COMPILER is turned on!") else(USE_INTEL_COMPILER) set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}/gcc") message(STATUS "USE_INTEL_COMPILER is turned off!") endif() else(${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR} MATCHES "Linux-aarch64") set(THIRDPARTY_LIB_DIR "${PROJECT_SOURCE_DIR}/3rdparty/liblinux/${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") endif() endif(WIN32) set(MESH_H_PATH ${PROJECT_SOURCE_DIR}/../Mesh/include) include_directories(${MESH_H_PATH}) # specify directory in which the linker will look for libraries for myself libraries: message(STATUS "The 3rdparty path is: ${THIRDPARTY_LIB_DIR}.") link_directories("${THIRDPARTY_LIB_DIR}") set(HDF5_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/HDF5/include) include_directories("${HDF5_H_PATH}") if(USE_TecplotLib) set(TECIO_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/TECIO/include) include_directories("${TECIO_H_PATH}") endif(USE_TecplotLib) set(PARMETIS_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/parmetis/include) include_directories("${PARMETIS_H_PATH}") set(MEITIS_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/metis/include) include_directories("${MEITIS_H_PATH}") set(CGNS_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/cgns/include) include_directories("${CGNS_H_PATH}") set(MGRID_H_PATH ${PROJECT_SOURCE_DIR}/../PHengLEI/3rdparty/mgrid/include) include_directories("${MGRID_H_PATH}") add_definitions(-DPH_PARALLEL -DPH_CGNS) #set(API_H_DIR ${PROJECT_SOURCE_DIR}/3rdparty) # set directory of DataStruct set(DataStruct_H_PATH DataStruct/include) set(DataStruct_H_LIST ${DataStruct_H_PATH}/DataStruct_Array.h ${DataStruct_H_PATH}/DataStruct_AdtNode.h ${DataStruct_H_PATH}/DataStruct_AdtTree.h ${DataStruct_H_PATH}/DataStruct_KDNode.h ${DataStruct_H_PATH}/DataStruct_KDTree.h ${DataStruct_H_PATH}/DataStruct_BinaryTree.h ${DataStruct_H_PATH}/DataStruct_Sort.h ${DataStruct_H_PATH}/DataStruct_Range.h ${DataStruct_H_PATH}/PHET.h ${DataStruct_H_PATH}/PHETBase.h ${DataStruct_H_PATH}/PHExpr.h ${DataStruct_H_PATH}/PHExprWrap.h ${DataStruct_H_PATH}/PHFastArrayIterator.h ${DataStruct_H_PATH}/PHMemblock.h ${DataStruct_H_PATH}/PHOps.h ${DataStruct_H_PATH}/PHProduct.h ${DataStruct_H_PATH}/PHSimpleArray.h ${DataStruct_H_PATH}/PHStorage.h ${DataStruct_H_PATH}/PHSlice.h ${DataStruct_H_PATH}/Pointer.h ${DataStruct_H_PATH}/PHVector3.h ${DataStruct_H_PATH}/PHMatrix.h ${DataStruct_H_PATH}/TypeDefine.h ${DataStruct_H_PATH}/HyList.h ${DataStruct_H_PATH}/DataContainer.h ${DataStruct_H_PATH}/PHHeapSort.h ) source_group(DataStruct\\include FILES ${DataStruct_H_LIST}) include_directories(${DataStruct_H_PATH}) set(DataStruct_CPP_PATH DataStruct/src) set(DataStruct_CPP_LIST ${DataStruct_CPP_PATH}/PHStorage.cpp ${DataStruct_CPP_PATH}/DataStruct_BinaryTree.cpp ${DataStruct_CPP_PATH}/DataStruct_KDTree.cpp ${DataStruct_CPP_PATH}/DataContainer.cpp ) source_group(DataStruct\\src FILES ${DataStruct_CPP_LIST}) # set directory of Data: set(Data_H_PATH Data/include) set(Data_H_LIST ${Data_H_PATH}/Data_SafeData.h ${Data_H_PATH}/Data_Util.h ${Data_H_PATH}/Data_IndexData.h ${Data_H_PATH}/Data_Param.h ${Data_H_PATH}/Data_Field.h ${Data_H_PATH}/Data_ParamFieldSuite.h ${Data_H_PATH}/GlobalDataBase.h ) source_group(Data\\include FILES ${Data_H_LIST}) include_directories(${Data_H_PATH}) set(Data_CPP_PATH Data/src) set(Data_CPP_LIST ${Data_CPP_PATH}/Data_SafeData.cpp ${Data_CPP_PATH}/Data_Util.cpp ${Data_CPP_PATH}/Data_IndexData.cpp ${Data_CPP_PATH}/Data_Param.cpp ${Data_CPP_PATH}/Data_Field.cpp ${Data_CPP_PATH}/Data_ParamFieldSuite.cpp ${Data_CPP_PATH}/GlobalDataBase.cpp ) source_group(Data\\src FILES ${Data_CPP_LIST}) # set directory of Math: set(Math_H_PATH Math/include) set(Math_H_LIST ${Math_H_PATH}/Math_BasisFunction.h ${Math_H_PATH}/Math_Limiter.h ) source_group(Math\\include FILES ${Math_H_LIST}) include_directories(${Math_H_PATH}) set(Math_CPP_PATH Math/src) set(Math_CPP_LIST ${Math_CPP_PATH}/Math_BasisFunction.cpp ) source_group(Math\\src FILES ${Math_CPP_LIST}) # set directory of MPI: set(MPI_H_PATH FYMPI/include) set(MPI_H_LIST ${MPI_H_PATH}/PHMpi.h ${MPI_H_PATH}/Parallel.h ${MPI_H_PATH}/ActionKey.h ) source_group(MPI\\include FILES ${MPI_H_LIST}) include_directories(${MPI_H_PATH}) set(MPI_CPP_PATH FYMPI/src) set(MPI_CPP_LIST ${MPI_CPP_PATH}/PHMpi.cpp ${MPI_CPP_PATH}/Parallel.cpp ${MPI_CPP_PATH}/ActionKey.cpp ) source_group(MPI\\src FILES ${MPI_CPP_LIST}) # set directory of Toolkit: set(Toolkit_H_PATH Toolkit/include) set(Toolkit_H_LIST ${Toolkit_H_PATH}/TK_Log.h ${Toolkit_H_PATH}/TK_Exit.h ${Toolkit_H_PATH}/TK_Parse.h ${Toolkit_H_PATH}/TK_Time.h ${Toolkit_H_PATH}/TK_Warning.h ) source_group(Toolkit\\include FILES ${Toolkit_H_LIST}) include_directories(${Toolkit_H_PATH}) set(Toolkit_CPP_PATH Toolkit/src) set(Toolkit_CPP_LIST ${Toolkit_CPP_PATH}/TK_Log.cpp ${Toolkit_CPP_PATH}/TK_Exit.cpp ${Toolkit_CPP_PATH}/TK_Parse.cpp ${Toolkit_CPP_PATH}/TK_Time.cpp ${Toolkit_CPP_PATH}/TK_Warning.cpp ) source_group(Toolkit\\src FILES ${Toolkit_CPP_LIST}) # set directory of IO: set(IO_H_PATH IO/include) set(IO_H_LIST ${IO_H_PATH}/PHIO.h ${IO_H_PATH}/IO_VirtualFile.h ${IO_H_PATH}/IO_FileReader.h ${IO_H_PATH}/IO_HDF5File.h ${IO_H_PATH}/IO_FileName.h ) source_group(IO\\include FILES ${IO_H_LIST}) include_directories(${IO_H_PATH}) set(IO_CPP_PATH IO/src) set(IO_CPP_LIST ${IO_CPP_PATH}/PHIO.cpp ${IO_CPP_PATH}/IO_VirtualFile.cpp ${IO_CPP_PATH}/IO_FileReader.cpp ${IO_CPP_PATH}/IO_HDF5File.cpp ${IO_CPP_PATH}/IO_FileName.cpp ) source_group(IO\\src FILES ${IO_CPP_LIST}) # set directory of Geometry. set(Geometry_H_PATH Geometry/include) set(Geometry_H_LIST ${Geometry_H_PATH}/Geo_Grid.h ${Geometry_H_PATH}/Geo_GridManager.h ${Geometry_H_PATH}/GridType.h ${Geometry_H_PATH}/Geo_Interface.h ${Geometry_H_PATH}/Geo_Interpoint.h ${Geometry_H_PATH}/Geo_SimpleGrid.h ${Geometry_H_PATH}/Geo_StructGrid.h ${Geometry_H_PATH}/Geo_UnstructGrid.h ${Geometry_H_PATH}/MultigridFactory.h ${Geometry_H_PATH}/Geo_CellMetrics_Struct.h ${Geometry_H_PATH}/Geo_CellMetrics_Unstruct.h ${Geometry_H_PATH}/Geo_CellTopo_Unstruct.h ${Geometry_H_PATH}/Geo_DynamicGridMetrics_Struct.h ${Geometry_H_PATH}/Geo_DynamicGridMetrics_Unstruct.h ${Geometry_H_PATH}/Geo_FaceMetrics_Struct.h ${Geometry_H_PATH}/Geo_FaceMetrics_Unstruct.h ${Geometry_H_PATH}/Geo_FaceTopo_Unstruct.h ${Geometry_H_PATH}/Geo_LineTopo_Unstruct.h ${Geometry_H_PATH}/Geo_GridIndex.h ${Geometry_H_PATH}/Geo_LSQWeight_Unstruct.h ${Geometry_H_PATH}/Geo_MultiGridInfo_Struct.h ${Geometry_H_PATH}/Geo_NodeTopo_Struct.h ${Geometry_H_PATH}/Geo_NodeTopo_Unstruct.h ${Geometry_H_PATH}/Geo_OversetGridTopo_Struct.h ${Geometry_H_PATH}/Geo_SimpleBC.h ${Geometry_H_PATH}/Geo_StructBC.h ${Geometry_H_PATH}/Geo_UnstructBC.h ${Geometry_H_PATH}/Geo_OversetGrid.h ${Geometry_H_PATH}/OversetGridFactory.h ${Geometry_H_PATH}/OversetInformation.h ${Geometry_H_PATH}/MeshAgglomeration.h ${Geometry_H_PATH}/Geometry.h ${Geometry_H_PATH}/LinkStruct.h ${Geometry_H_PATH}/Geo_Point.h ${Geometry_H_PATH}/Geo_Face.h ${Geometry_H_PATH}/GRHash.h ${Geometry_H_PATH}/OverLappingGrid.h ${Geometry_H_PATH}/GeometryUnit.h ${Geometry_H_PATH}/Geo_PointFactory.h ${Geometry_H_PATH}/Geo_Element.h ${Geometry_H_PATH}/Geo_Sample.h ${Geometry_H_PATH}/GeomProxy.h ${Geometry_H_PATH}/FieldProxy.h ${Geometry_H_PATH}/GeneralFieldProxy.h ${Geometry_H_PATH}/FaceProxy.h ${Geometry_H_PATH}/Geo_SimpleVC.h ) source_group(Geometry\\include FILES ${Geometry_H_LIST}) include_directories(${Geometry_H_PATH}) set(Geometry_CPP_PATH Geometry/src) set(Geometry_CPP_LIST ${Geometry_CPP_PATH}/Geo_Grid.cpp ${Geometry_CPP_PATH}/Geo_GridManager.cpp ${Geometry_CPP_PATH}/GridType.cpp ${Geometry_CPP_PATH}/Geo_SimpleGrid.cpp ${Geometry_CPP_PATH}/Geo_StructGrid.cpp ${Geometry_CPP_PATH}/Geo_UnstructGrid.cpp ${Geometry_CPP_PATH}/StructGridFD.cpp ${Geometry_CPP_PATH}/Geo_CellMetrics_Struct.cpp ${Geometry_CPP_PATH}/Geo_CellMetrics_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_CellTopo_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_DynamicGridMetrics_Struct.cpp ${Geometry_CPP_PATH}/Geo_DynamicGridMetrics_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_FaceMetrics_Struct.cpp ${Geometry_CPP_PATH}/Geo_FaceMetrics_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_FaceTopo_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_LineTopo_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_GridIndex.cpp ${Geometry_CPP_PATH}/Geo_LSQWeight_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_MultiGridInfo_Struct.cpp ${Geometry_CPP_PATH}/Geo_NodeTopo_Struct.cpp ${Geometry_CPP_PATH}/Geo_NodeTopo_Unstruct.cpp ${Geometry_CPP_PATH}/Geo_OversetGridTopo_Struct.cpp ${Geometry_CPP_PATH}/Geo_SimpleBC.cpp ${Geometry_CPP_PATH}/Geo_StructBC.cpp ${Geometry_CPP_PATH}/Geo_UnstructBC.cpp ${Geometry_CPP_PATH}/Geo_OversetGrid.cpp ${Geometry_CPP_PATH}/OversetGridFactory.cpp ${Geometry_CPP_PATH}/OversetInformation.cpp ${Geometry_CPP_PATH}/MeshAgglomeration.cpp ${Geometry_CPP_PATH}/Geometry.cpp ${Geometry_CPP_PATH}/Geo_Interface.cpp ${Geometry_CPP_PATH}/Geo_Interpoint.cpp ${Geometry_CPP_PATH}/MultigridFactory.cpp ${Geometry_CPP_PATH}/GRHash.cpp ${Geometry_CPP_PATH}/OverLappingGrid.cpp ${Geometry_CPP_PATH}/GeometryUnit.cpp ${Geometry_CPP_PATH}/Geo_PointFactory.cpp ${Geometry_CPP_PATH}/Geo_Element.cpp ${Geometry_CPP_PATH}/Geo_Sample.cpp ${Geometry_CPP_PATH}/GeomProxy.cpp ${Geometry_CPP_PATH}/FieldProxy.cpp ${Geometry_CPP_PATH}/GeneralFieldProxy.cpp ${Geometry_CPP_PATH}/FaceProxy.cpp ${Geometry_CPP_PATH}/Geo_SimpleVC.cpp ) source_group(Geometry\\src FILES ${Geometry_CPP_LIST}) # set directory of Physics. set(Physics_H_PATH Physics/include) set(Physics_H_LIST ${Physics_H_PATH}/AleModel.h ${Physics_H_PATH}/AleManager.h ${Physics_H_PATH}/AleForceManager.h ${Physics_H_PATH}/MovingMesh.h ${Physics_H_PATH}/DeformingSolverManager.h ${Physics_H_PATH}/SixDofManager.h ${Physics_H_PATH}/PHSuperMatrix.h ${Physics_H_PATH}/SixDOF.h ${Physics_H_PATH}/Force.h ${Physics_H_PATH}/Zone.h ${Physics_H_PATH}/Residual.h ${Physics_H_PATH}/GradientOperation.h ${Physics_H_PATH}/AerodynamicsBasicRelations.h ${Physics_H_PATH}/Limiter.h ${Physics_H_PATH}/Task.h ${Physics_H_PATH}/Task_Simple.h ${Physics_H_PATH}/Task_ServerUpdateInterface.h ${Physics_H_PATH}/Task_ServerUpdateInterpoint.h ${Physics_H_PATH}/Task_WriteBinaryTecplot.h ${Physics_H_PATH}/Region.h ${Physics_H_PATH}/IO_GridReader.h ${Physics_H_PATH}/GridGroup.h ${Physics_H_PATH}/PerfectGas.h ${Physics_H_PATH}/Gas.h ${Physics_H_PATH}/Solver.h ${Physics_H_PATH}/Flux_Inviscid.h ${Physics_H_PATH}/Flux_RoeEntropyCorrection.h ${Physics_H_PATH}/Jacobian.h ${Physics_H_PATH}/Gradient.h ${Physics_H_PATH}/MatrixLUSGS.h ) if(BUILD_IncomSolver) list(APPEND Physics_H_LIST ${Physics_H_PATH}/IncomGas.h) endif(BUILD_IncomSolver) source_group(Physics\\include FILES ${Physics_H_LIST}) include_directories(${Physics_H_PATH}) set(Physics_CPP_PATH Physics/src) set(Physics_CPP_LIST ${Physics_CPP_PATH}/Zone.cpp ${Physics_CPP_PATH}/Force.cpp ${Physics_CPP_PATH}/AleForceManager.cpp ${Physics_CPP_PATH}/AleModel.cpp ${Physics_CPP_PATH}/AleManager.cpp ${Physics_CPP_PATH}/MovingMesh.cpp ${Physics_CPP_PATH}/DeformingSolverManager.cpp ${Physics_CPP_PATH}/SixDofManager.cpp ${Physics_CPP_PATH}/SixDOF.cpp ${Physics_CPP_PATH}/Residual.cpp ${Physics_CPP_PATH}/GradientOperation.cpp ${Physics_CPP_PATH}/AerodynamicsBasicRelations.cpp ${Physics_CPP_PATH}/Limiter.cpp ${Physics_CPP_PATH}/Task.cpp ${Physics_CPP_PATH}/Task_Simple.cpp ${Physics_CPP_PATH}/Task_ServerUpdateInterface.cpp ${Physics_CPP_PATH}/Task_ServerUpdateInterpoint.cpp ${Physics_CPP_PATH}/Task_WriteBinaryTecplot.cpp ${Physics_CPP_PATH}/Region.cpp ${Physics_CPP_PATH}/IO_GridReader.cpp ${Physics_CPP_PATH}/GridGroup.cpp ${Physics_CPP_PATH}/PerfectGas.cpp ${Physics_CPP_PATH}/Solver.cpp ${Physics_CPP_PATH}/Flux_Inviscid.cpp ${Physics_CPP_PATH}/Flux_RoeEntropyCorrection.cpp ${Physics_CPP_PATH}/Jacobian.cpp ${Physics_CPP_PATH}/Gradient.cpp ${Physics_CPP_PATH}/Gas.cpp ${Physics_CPP_PATH}/MatrixLUSGS.cpp ) if(BUILD_IncomSolver) list(APPEND Physics_CPP_LIST ${Physics_CPP_PATH}/IncomGas.cpp) endif(BUILD_IncomSolver) source_group(Physics\\src FILES ${Physics_CPP_LIST}) # set directory of PreProcess: set(PreProcess_H_PATH PreProcess/include) set(PreProcess_H_LIST ${PreProcess_H_PATH}/Pre_Block_Struct.h ${PreProcess_H_PATH}/Pre_UnstructGridPartition.h ${PreProcess_H_PATH}/Pre_WalldistCompute.h ${PreProcess_H_PATH}/Pre_GridConversion.h ${PreProcess_H_PATH}/Pre_FieldViewToPHengLEI_Unstruct.h ${PreProcess_H_PATH}/Pre_CGNSToPHengLEI_Unstruct.h ${PreProcess_H_PATH}/Pre_CGNSConversion_Struct.h ${PreProcess_H_PATH}/Pre_CGNSToPlot3D_Struct.h ${PreProcess_H_PATH}/Pre_CGNSToPHengLEI_Struct.h ${PreProcess_H_PATH}/Pre_Plot3DToPHengLEI_Struct.h ${PreProcess_H_PATH}/Pre_FluentToPHengLEI_Unstruct.h ${PreProcess_H_PATH}/Pre_HDF5File.h ${PreProcess_H_PATH}/Pre_GridMirror.h ${PreProcess_H_PATH}/Pre_StructGridPartition.h ${PreProcess_H_PATH}/Pre_StructToUnstruct.h ${PreProcess_H_PATH}/Pre_GridTranslator.h ${PreProcess_H_PATH}/Pre_GridCombine.h ${PreProcess_H_PATH}/Pre_GridBase.h ${PreProcess_H_PATH}/MixGrid.h ${PreProcess_H_PATH}/Pre_Reorder.h ) source_group(PreProcess\\include FILES ${PreProcess_H_LIST}) include_directories(${PreProcess_H_PATH}) set(PreProcess_CPP_PATH PreProcess/src) set(PreProcess_CPP_LIST ${PreProcess_CPP_PATH}/Pre_Block_Struct.cpp ${PreProcess_CPP_PATH}/Pre_UnstructGridPartition.cpp ${PreProcess_CPP_PATH}/Pre_WalldistCompute.cpp ${PreProcess_CPP_PATH}/Pre_GridConversion.cpp ${PreProcess_CPP_PATH}/Pre_FieldViewToPHengLEI_Unstruct.cpp ${PreProcess_CPP_PATH}/Pre_CGNSToPHengLEI_Unstruct.cpp ${PreProcess_CPP_PATH}/Pre_CGNSConversion_Struct.cpp ${PreProcess_CPP_PATH}/Pre_CGNSToPlot3D_Struct.cpp ${PreProcess_CPP_PATH}/Pre_CGNSToPHengLEI_Struct.cpp ${PreProcess_CPP_PATH}/Pre_Plot3DToPHengLEI_Struct.cpp ${PreProcess_CPP_PATH}/Pre_FluentToPHengLEI_Unstruct.cpp ${PreProcess_CPP_PATH}/Pre_HDF5File.cpp ${PreProcess_CPP_PATH}/Pre_GridMirror.cpp ${PreProcess_CPP_PATH}/Pre_StructGridPartition.cpp ${PreProcess_CPP_PATH}/Pre_StructToUnstruct.cpp ${PreProcess_CPP_PATH}/Pre_GridTranslator.cpp ${PreProcess_CPP_PATH}/Pre_GridCombine.cpp ${PreProcess_CPP_PATH}/Pre_GridBase.cpp ${PreProcess_CPP_PATH}/MixGrid.cpp ${PreProcess_CPP_PATH}/Pre_Reorder.cpp ) source_group(PreProcess\\src FILES ${PreProcess_CPP_LIST}) # set directory of PostProcess: set(PostProcess_H_PATH PostProcess/include) set(PostProcess_H_LIST ${PostProcess_H_PATH}/Post_Visual.h ${PostProcess_H_PATH}/Post_WriteVisualFile.h ${PostProcess_H_PATH}/Post_WriteTecplot.h ${PostProcess_H_PATH}/Post_WriteEnsight.h ${PostProcess_H_PATH}/Post_ForceMoment.h ${PostProcess_H_PATH}/PostProcess.h ${PostProcess_H_PATH}/IO_FlowReader.h ${PostProcess_H_PATH}/ForceProcessStruct.h ${PostProcess_H_PATH}/ForceProcessUnstruct.h ${PostProcess_H_PATH}/PostProcessData.h ${PostProcess_H_PATH}/Post_Probes.h ${PostProcess_H_PATH}/Post_ProbesWrite.h ) source_group(PostProcess\\include FILES ${PostProcess_H_LIST}) include_directories(${PostProcess_H_PATH}) set(PostProcess_CPP_PATH PostProcess/src) set(PostProcess_CPP_LIST ${PostProcess_CPP_PATH}/Post_Visual.cpp ${PostProcess_CPP_PATH}/Post_WriteVisualFile.cpp ${PostProcess_CPP_PATH}/Post_WriteTecplot.cpp ${PostProcess_CPP_PATH}/Post_WriteEnsight.cpp ${PostProcess_CPP_PATH}/Post_ForceMoment.cpp ${PostProcess_CPP_PATH}/PostProcess.cpp ${PostProcess_CPP_PATH}/IO_FlowReader.cpp ${PostProcess_CPP_PATH}/ForceProcessStruct.cpp ${PostProcess_CPP_PATH}/ForceProcessUnstruct.cpp ${PostProcess_CPP_PATH}/PostProcessData.cpp ${PostProcess_CPP_PATH}/Post_Probes.cpp ${PostProcess_CPP_PATH}/Post_ProbesWrite.cpp ) source_group(PostProcess\\src FILES ${PostProcess_CPP_LIST}) # set directory of Common: set(Common_H_PATH Common/include) set(Common_H_LIST ${Common_H_PATH}/AMRDef.h ${Common_H_PATH}/Constants.h ${Common_H_PATH}/PHHeader.h ${Common_H_PATH}/Precision.h ${Common_H_PATH}/Glb_Dimension.h ${Common_H_PATH}/LIB_Macro.h ) source_group(Common\\include FILES ${Common_H_LIST}) include_directories(${Common_H_PATH}) set(Common_CPP_PATH Common/src) set(Common_CPP_LIST ${Common_CPP_PATH}/Glb_Dimension.cpp ) source_group(Common\\src FILES ${Common_CPP_LIST}) #20.1 set header file list set(API_HEAD_LIST ${DataStruct_H_LIST} ${Data_H_LIST} ${Math_H_LIST} ${MPI_H_LIST} ${Toolkit_H_LIST} ${IO_H_LIST} ${Geometry_H_LIST} ${Physics_H_LIST} ${PreProcess_H_LIST} ${PostProcess_H_LIST} ${Common_H_LIST} ) #20.2 set source file list: set(API_CPP_LIST ${DataStruct_CPP_LIST} ${Data_CPP_LIST} ${Math_CPP_LIST} ${MPI_CPP_LIST} ${Toolkit_CPP_LIST} ${IO_CPP_LIST} ${Geometry_CPP_LIST} ${Physics_CPP_LIST} ${PreProcess_CPP_LIST} ${PostProcess_CPP_LIST} ${Common_CPP_LIST} ) # set directory of MultiSpeciesGas. set(MultiSpecies_H_PATH MultiSpecies/include) set(MultiSpecies_H_LIST ${MultiSpecies_H_PATH}/ChemModel.h ${MultiSpecies_H_PATH}/MixedGas.h ) source_group(MultiSpecies\\include FILES ${MultiSpecies_H_LIST}) include_directories(${MultiSpecies_H_PATH}) set(MultiSpecies_CPP_PATH MultiSpecies/src) set(MultiSpecies_CPP_LIST ${MultiSpecies_CPP_PATH}/ChemModel.cpp ${MultiSpecies_CPP_PATH}/MixedGas.cpp ) source_group(MultiSpecies\\src FILES ${MultiSpecies_CPP_LIST}) list(APPEND API_HEAD_LIST ${MultiSpecies_H_LIST}) list(APPEND API_CPP_LIST ${MultiSpecies_CPP_LIST}) #21. adds flags to the compiler command line for sources in the current directory and below: add_definitions(-DPH_PARALLEL -DPH_CGNS) # For OCC. set(OCC_LIBS) if(USE_OCC) message(STATUS "Using OpenCasCade ...... ") set(OCC_LIBS_REQUIRED # subset of DataExchange TKSTEP TKSTEP209 TKSTEPAttr TKSTEPBase TKIGES TKSTL TKXSBase # ModelingAlgorithms TKOffset TKFeat TKFillet TKBool TKShHealing TKMesh TKHLR TKBO TKPrim TKTopAlgo TKGeomAlgo # ModelingData TKBRep TKGeomBase TKG3d TKG2d # FoundationClasses # TKAdvTools -- not necessary? (and removed from OCC 6.8) TKMath TKernel) # Set the path of the OCC library. set(3RDPARTY_LIB_PATH ${PROJECT_SOURCE_DIR}/3rdparty/occ730-vc11-bit64-release) set(OCC_LIB_PATH ${3RDPARTY_LIB_PATH} CACHE PATH "path to OpenCasCade library.") message(STATUS "Path to OpenCasCade library: " ${OCC_LIB_PATH}) # Check if all the library exist -- it's need to be checked. foreach(OCC ${OCC_LIBS_REQUIRED}) list(APPEND OCC_LIBS ${OCC}) unset(OCC CACHE) endforeach(OCC) if(WIN32) MESSAGE(STATUS "Using Win32 OpenCasCade.") MESSAGE(STATUS "${OCC_LIB_PATH}/lib") MESSAGE(STATUS "${OCC_LIB_PATH}/bin") link_directories("${OCC_LIB_PATH}/lib") link_directories("${OCC_LIB_PATH}/bin") include_directories("${OCC_LIB_PATH}/inc") else(WIN32) MESSAGE(STATUS "Using NON-Win32 OpenCasCade.") MESSAGE(STATUS "${OCC_LIB_PATH}/lin64/gcc/lib") MESSAGE(STATUS "${OCC_LIB_PATH}/inc") link_directories("${OCC_LIB_PATH}/lin64/gcc/lib") include_directories("${OCC_LIB_PATH}/inc") endif(WIN32) endif() # Some pre-definitions that occ need. if(USE_OCC) #target_link_libraries(${EXECUTABLE_TARGET_NAME} ${OCC_LIBS}) add_definitions(-DWNT) add_definitions(-DNOTCL) endif() # build executable program or library to the project using the specified source files and header files: if ("${BUILD_LIBRARY_TYPE}" STREQUAL "Shared") # Building Shared Library. message(STATUS "Building Shared Library ${API_TARGET_NAME} ...") add_library(${API_TARGET_NAME} SHARED ${API_CPP_LIST} ${API_HEAD_LIST}) elseif ("${BUILD_LIBRARY_TYPE}" STREQUAL "Static") # Building Static Library. message(STATUS "Building Static Library ${API_TARGET_NAME} ...") add_library(${API_TARGET_NAME} STATIC ${API_CPP_LIST} ${API_HEAD_LIST}) endif() # link API library: if(WIN32) list(APPEND LINK_LIBRARY_LIST metis parmetis cgns hdf5 mgrid IMlib) else(WIN32) list(APPEND LINK_LIBRARY_LIST metis parmetis cgns hdf5 mgrid) endif(WIN32) if(USE_TecplotLib) list(APPEND LINK_LIBRARY_LIST tecio) endif(USE_TecplotLib) if(WIN32) list(APPEND LINK_LIBRARY_LIST ${mpiname}) endif(WIN32) if(BUILD_GMRESSolver) # sacado library list(APPEND LINK_LIBRARY_LIST ${Sacado_LIBRARIES}) # PETSc library list(APPEND LINK_LIBRARY_LIST ${PETSC_Libraries}) endif() target_link_libraries(${API_TARGET_NAME} ${LINK_LIBRARY_LIST}) message(STATUS "Link library list: ${LINK_LIBRARY_LIST}.") # For OpenMP if(USE_OMP) find_package (OpenMP) if (OpenMP_FOUND) if(WIN32) target_include_directories (${API_TARGET_NAME} PRIVATE ${OpenMP_CXX_INCLUDE_DIRS} ) target_compile_options (${API_TARGET_NAME} PRIVATE ${OpenMP_CXX_FLAGS} ) target_compile_features (${API_TARGET_NAME} PUBLIC cxx_std_14 ) target_link_libraries (${API_TARGET_NAME} PRIVATE ${OpenMP_CXX_LIBRARIES} ) else(WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") endif(WIN32) endif (OpenMP_FOUND) endif (USE_OMP) #24. exit: message(STATUS "--- Exit ${CMAKE_CURRENT_LIST_FILE}! ---")