Skip to content

Instantly share code, notes, and snippets.

@valgur
Last active August 10, 2023 15:29
Show Gist options
  • Save valgur/e54e39b6a8931b58cc1776515104c828 to your computer and use it in GitHub Desktop.
Save valgur/e54e39b6a8931b58cc1776515104c828 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4ef14f58-8e44-4254-a068-afb08f884aa7",
"metadata": {},
"outputs": [],
"source": [
"from pathlib import Path\n",
"from pprint import pprint\n",
"import re\n",
"\n",
"source_path = Path.home() / \".conan2/p/pcle09d790c61d8a/s/src\""
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ef764b70-b052-4358-a231-63858775db84",
"metadata": {},
"outputs": [],
"source": [
"exclude_dirs = {\"doc\", \"examples\", \"test\", \"benchmarks\"}\n",
"cmakelists = sorted(p for p in source_path.rglob(\"CMakeLists.txt\") if not set(p.parts) & exclude_dirs)\n",
"cmakelists.remove(source_path / \"CMakeLists.txt\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4754b848-883b-485c-ae3b-a2731ea14a05",
"metadata": {},
"outputs": [],
"source": [
"def _correct_deps(deps):\n",
" return {{\n",
" \"${qtx}\": \"qt\",\n",
" \"opengl_glu\": \"opengl\",\n",
" \"glew\": \"opengl\",\n",
" \"glut\": \"opengl\",\n",
" }.get(d.lower(), d.lower()) for d in deps}\n",
"\n",
"def read_props(cmake_file):\n",
" content = Path(cmake_file).read_text()\n",
" subsys_params = re.findall(r'set\\(SUB(?:SUB)?SYS_(\\w+) +\"?([^\")]+)\"?\\)', content)\n",
" all_params = dict(re.findall(r\"^set\\((\\S+) ([^)]+?)\\)\", content, re.I | re.M))\n",
" subsys_depend = re.findall(r\"PCL_SUBSYS_DEPEND\\(([^)]+)\\)\", content, re.I | re.M)\n",
" d = {prop.lower(): val for prop, val in subsys_params}\n",
" d[\"deps\"] = set(d.pop(\"deps\", \"\").split())\n",
" d[\"deps\"] |= set(d.pop(\"ext_deps\", \"\").split())\n",
" d[\"opt_deps\"] = set(d.pop(\"opt_deps\", \"\").split())\n",
" if subsys_depend:\n",
" subsys_depend = re.sub(r\"\\$\\{(SUB|EXT)[^}]+\\} ?\", \"\", subsys_depend[0])\n",
" deps = [set(x.strip().split()) for x in re.split(r\"\\b[A-Z_]+ \", subsys_depend)[1:]]\n",
" if len(deps) >= 1:\n",
" d[\"deps\"] |= deps[0]\n",
" if len(deps) >= 2:\n",
" d[\"opt_deps\"] |= deps[1]\n",
" if len(deps) >= 3:\n",
" d[\"opt_deps\"] |= deps[2]\n",
" d[\"opt_deps\"] |= set(re.findall(r\"(\\w+)_FOUND\", content))\n",
" d[\"opt_deps\"] |= set(re.findall(r\"WITH_(\\w+)\", content))\n",
" d[\"opt_deps\"] |= set(re.findall(r\"HAVE_(\\w+)\", content))\n",
" d[\"deps\"] = _correct_deps(d[\"deps\"])\n",
" d[\"opt_deps\"] = _correct_deps(d[\"opt_deps\"]) - d[\"deps\"]\n",
" m = re.search(r\"PCL_MAKE_PKGCONFIG\\([^)]+?\\)\", content)\n",
" d[\"export_pkgconfig\"] = m is not None\n",
" d[\"header_only\"] = m and \"HEADER_ONLY\" in m[0]\n",
" d[\"enabled_by_default\"] = (all_params.get(\"DEFAULT\") or all_params.get(\"build\")) in [\"TRUE\", None]\n",
" libs = re.findall(r\"^\\w*add_library\\((\\S+) [^)]+?\\)\", content, re.I | re.M)\n",
" d[\"libs\"] = [l.replace(\"${LIB_NAME}\", f\"pcl_{d['name']}\") for l in libs]\n",
" d[\"is_subcomponent\"] = any(p.startswith(\"SUBSUB\") for p in all_params)\n",
" d.pop(\"target_name\", None)\n",
" d.pop(\"path\", None)\n",
" reasons = re.findall(r'set\\(REASON (\"[^)]+?\")\\)', content, re.I | re.M)\n",
" if any(\"VTK\" in r and (\"Qt\" in r or \"QVTK\" in r) for r in reasons):\n",
" d[\"opt_deps\"] -= {\"qvtk\"}\n",
" d[\"deps\"] |= {\"qvtk\"}\n",
" elif any(\"VTK\" in r for r in reasons):\n",
" d[\"opt_deps\"] -= {\"vtk\"}\n",
" d[\"deps\"] |= {\"vtk\"}\n",
" elif reasons:\n",
" print(f\"'{cmake_file.parent.name}' might be disabled because {', '.join(reasons)}\")\n",
" return d"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "1e649df2-a89c-4f6c-8253-fdc9a146d9b7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"'apps' might be disabled because \"Disabled by default\"\n",
"'kinfu' might be disabled because \"Kinfu uses textures which was removed in CUDA 12\"\n",
"'kinfu_large_scale' might be disabled because \"Kinfu_large_scale uses textures which was removed in CUDA 12\"\n",
"{('2d',): {'deps': {'common', 'filters'},\n",
" 'desc': 'Point cloud 2d',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': True,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': '2d',\n",
" 'opt_deps': {'vtk'}},\n",
" ('apps',): {'deps': {'2d',\n",
" 'common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'keypoints',\n",
" 'ml',\n",
" 'octree',\n",
" 'recognition',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'stereo',\n",
" 'surface',\n",
" 'tracking',\n",
" 'visualization'},\n",
" 'desc': 'Application examples/samples that show how PCL works',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_apps'],\n",
" 'name': 'apps',\n",
" 'opt_deps': {'libusb',\n",
" 'opengl',\n",
" 'openni',\n",
" 'png',\n",
" 'qhull',\n",
" 'qt',\n",
" 'qvtk',\n",
" 'vtk'}},\n",
" ('apps', '3d_rec_framework'): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'keypoints',\n",
" 'ml',\n",
" 'octree',\n",
" 'openni',\n",
" 'recognition',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'tracking',\n",
" 'visualization',\n",
" 'vtk'},\n",
" 'desc': '3D recognition framework',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': True,\n",
" 'libs': ['pcl_3d_rec_framework'],\n",
" 'name': '3d_rec_framework',\n",
" 'opt_deps': {'qhull'}},\n",
" ('apps', 'cloud_composer'): {'deps': {'apps',\n",
" 'common',\n",
" 'filters',\n",
" 'io',\n",
" 'qt',\n",
" 'qvtk',\n",
" 'visualization',\n",
" 'vtk'},\n",
" 'desc': 'Cloud Composer - Application for '\n",
" 'Manipulating Point Clouds',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': True,\n",
" 'libs': ['pcl_cc_tool_interface'],\n",
" 'name': 'cloud_composer',\n",
" 'opt_deps': set()},\n",
" ('apps', 'in_hand_scanner'): {'deps': {'apps',\n",
" 'common',\n",
" 'features',\n",
" 'io',\n",
" 'kdtree',\n",
" 'opengl',\n",
" 'openni',\n",
" 'qt'},\n",
" 'desc': 'In-hand scanner for small objects',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': True,\n",
" 'libs': [],\n",
" 'name': 'in_hand_scanner',\n",
" 'opt_deps': set()},\n",
" ('apps', 'modeler'): {'deps': {'apps',\n",
" 'common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'keypoints',\n",
" 'octree',\n",
" 'qt',\n",
" 'qvtk',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'tracking',\n",
" 'visualization',\n",
" 'vtk'},\n",
" 'desc': 'PCLModeler: PCL based reconstruction platform',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': True,\n",
" 'libs': [],\n",
" 'name': 'modeler',\n",
" 'opt_deps': set()},\n",
" ('apps', 'point_cloud_editor'): {'deps': {'apps',\n",
" 'common',\n",
" 'filters',\n",
" 'io',\n",
" 'opengl',\n",
" 'qt',\n",
" 'vtk'},\n",
" 'desc': 'Point Cloud Editor - Simple editor '\n",
" 'for 3D point clouds',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': True,\n",
" 'libs': [],\n",
" 'name': 'point_cloud_editor',\n",
" 'opt_deps': set()},\n",
" ('common',): {'deps': {'eigen', 'boost'},\n",
" 'desc': 'Point cloud common library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_common'],\n",
" 'name': 'common',\n",
" 'opt_deps': {'eigen', 'boost'}},\n",
" ('cuda', 'apps'): {'deps': {'common',\n",
" 'cuda',\n",
" 'cuda_common',\n",
" 'cuda_features',\n",
" 'cuda_io',\n",
" 'cuda_sample_consensus',\n",
" 'cuda_segmentation',\n",
" 'geometry',\n",
" 'io',\n",
" 'visualization',\n",
" 'vtk'},\n",
" 'desc': 'Point cloud library CUDA apps',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': 'cuda_apps',\n",
" 'opt_deps': {'openni'}},\n",
" ('cuda', 'common'): {'deps': {'cuda'},\n",
" 'desc': 'Point cloud CUDA common library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': True,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': 'cuda_common',\n",
" 'opt_deps': set()},\n",
" ('cuda', 'features'): {'deps': {'cuda_common', 'io', 'cuda', 'common'},\n",
" 'desc': 'Point Cloud CUDA Feature Estimation library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_cuda_features'],\n",
" 'name': 'cuda_features',\n",
" 'opt_deps': set()},\n",
" ('cuda', 'io'): {'deps': {'cuda_common', 'openni', 'common', 'cuda', 'io'},\n",
" 'desc': 'Point cloud CUDA IO library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_cuda_io'],\n",
" 'name': 'cuda_io',\n",
" 'opt_deps': set()},\n",
" ('cuda', 'sample_consensus'): {'deps': {'cuda_common', 'io', 'cuda', 'common'},\n",
" 'desc': 'Point Cloud CUDA Sample Consensus '\n",
" 'library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_cuda_sample_consensus'],\n",
" 'name': 'cuda_sample_consensus',\n",
" 'opt_deps': set()},\n",
" ('cuda', 'segmentation'): {'deps': {'cuda_common', 'io', 'cuda', 'common'},\n",
" 'desc': 'Point cloud CUDA Segmentation library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_cuda_segmentation'],\n",
" 'name': 'cuda_segmentation',\n",
" 'opt_deps': set()},\n",
" ('features',): {'deps': {'2d',\n",
" 'common',\n",
" 'filters',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search'},\n",
" 'desc': 'Point cloud features library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_features'],\n",
" 'name': 'features',\n",
" 'opt_deps': set()},\n",
" ('filters',): {'deps': {'common',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search'},\n",
" 'desc': 'Point cloud filters library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_filters'],\n",
" 'name': 'filters',\n",
" 'opt_deps': set()},\n",
" ('geometry',): {'deps': {'common'},\n",
" 'desc': 'Point cloud geometry library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': True,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_geometry'],\n",
" 'name': 'geometry',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'containers'): {'deps': {'common', 'cuda'},\n",
" 'desc': 'Containers with reference counting for GPU '\n",
" 'memory. This module can be compiled without '\n",
" 'Cuda Toolkit.',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_containers'],\n",
" 'name': 'gpu_containers',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'features'): {'deps': {'common',\n",
" 'cuda',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_octree',\n",
" 'gpu_utils'},\n",
" 'desc': 'Temporary GPU_common module. Weak CUDA '\n",
" 'dependency: a code that use this module '\n",
" 'requires CUDA Toolkit installed, but should be '\n",
" 'compiled without nvcc',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_features'],\n",
" 'name': 'gpu_features',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'kinfu'): {'deps': {'common',\n",
" 'cuda',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'io',\n",
" 'search'},\n",
" 'desc': 'Kinect Fusion implementation',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_kinfu'],\n",
" 'name': 'gpu_kinfu',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'kinfu', 'tools'): {'deps': {'cuda', 'visualization', 'gpu_kinfu'},\n",
" 'desc': 'Kinfu tools',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': True,\n",
" 'libs': [],\n",
" 'name': 'tools',\n",
" 'opt_deps': {'opencv'}},\n",
" ('gpu', 'kinfu_large_scale'): {'deps': {'common',\n",
" 'cuda',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_utils',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'surface'},\n",
" 'desc': 'Kinect Fusion implementation, with '\n",
" 'volume shifting',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_kinfu_large_scale'],\n",
" 'name': 'gpu_kinfu_large_scale',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'kinfu_large_scale', 'tools'): {'deps': {'cuda',\n",
" 'gpu_kinfu_large_scale',\n",
" 'visualization'},\n",
" 'desc': 'Kinfu large scale tools',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': True,\n",
" 'libs': [],\n",
" 'name': 'tools',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'octree'): {'deps': {'gpu_containers', 'cuda', 'common', 'gpu_utils'},\n",
" 'desc': 'Octree GPU',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_octree'],\n",
" 'name': 'gpu_octree',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'people'): {'deps': {'common',\n",
" 'cuda',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_utils',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'visualization'},\n",
" 'desc': 'Point cloud people library',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_people'],\n",
" 'name': 'gpu_people',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'people', 'tools'): {'deps': {'vtk', 'cuda'},\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': 'tools',\n",
" 'opt_deps': {'openni'}},\n",
" ('gpu', 'segmentation'): {'deps': {'common',\n",
" 'cuda',\n",
" 'gpu_containers',\n",
" 'gpu_octree',\n",
" 'gpu_utils'},\n",
" 'desc': 'Point cloud GPU segmentation library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_segmentation'],\n",
" 'name': 'gpu_segmentation',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'surface'): {'deps': {'common',\n",
" 'cuda',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_utils'},\n",
" 'desc': 'Surface algorithms with GPU',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_surface'],\n",
" 'name': 'gpu_surface',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'tracking'): {'deps': {'common',\n",
" 'cuda',\n",
" 'filters',\n",
" 'gpu_containers',\n",
" 'gpu_octree',\n",
" 'gpu_utils',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'tracking'},\n",
" 'desc': 'Tracking with GPU',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_tracking'],\n",
" 'name': 'gpu_tracking',\n",
" 'opt_deps': set()},\n",
" ('gpu', 'utils'): {'deps': {'gpu_containers', 'cuda', 'common'},\n",
" 'desc': 'Device layer functions.',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_gpu_utils'],\n",
" 'name': 'gpu_utils',\n",
" 'opt_deps': set()},\n",
" ('io',): {'deps': {'octree', 'common'},\n",
" 'desc': 'Point cloud IO library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_io_ply', 'pcl_io'],\n",
" 'name': 'io',\n",
" 'opt_deps': {'davidsdk',\n",
" 'dssdk',\n",
" 'ensenso',\n",
" 'fzapi',\n",
" 'libusb',\n",
" 'openni',\n",
" 'openni2',\n",
" 'pcap',\n",
" 'png',\n",
" 'rssdk',\n",
" 'rssdk2',\n",
" 'vtk'}},\n",
" ('kdtree',): {'deps': {'common'},\n",
" 'desc': 'Point cloud kd-tree library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_kdtree'],\n",
" 'name': 'kdtree',\n",
" 'opt_deps': {'flann'}},\n",
" ('keypoints',): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search'},\n",
" 'desc': 'Point cloud keypoints library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_keypoints'],\n",
" 'name': 'keypoints',\n",
" 'opt_deps': set()},\n",
" ('ml',): {'deps': {'common'},\n",
" 'desc': 'Point cloud machine learning library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_ml'],\n",
" 'name': 'ml',\n",
" 'opt_deps': set()},\n",
" ('octree',): {'deps': {'common'},\n",
" 'desc': 'Point cloud octree library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_octree'],\n",
" 'name': 'octree',\n",
" 'opt_deps': set()},\n",
" ('outofcore',): {'deps': {'common',\n",
" 'filters',\n",
" 'io',\n",
" 'octree',\n",
" 'visualization'},\n",
" 'desc': 'Point cloud outofcore library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_outofcore'],\n",
" 'name': 'outofcore',\n",
" 'opt_deps': set()},\n",
" ('outofcore', 'tools'): {'deps': {'vtk'},\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': 'tools',\n",
" 'opt_deps': set()},\n",
" ('people',): {'deps': {'common',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'visualization',\n",
" 'vtk'},\n",
" 'desc': 'Point cloud people library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_people'],\n",
" 'name': 'people',\n",
" 'opt_deps': {'openni'}},\n",
" ('recognition',): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'io',\n",
" 'kdtree',\n",
" 'ml',\n",
" 'octree',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search'},\n",
" 'desc': 'Point cloud recognition library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_recognition'],\n",
" 'name': 'recognition',\n",
" 'opt_deps': {'metslib'}},\n",
" ('registration',): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search'},\n",
" 'desc': 'Point cloud registration library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_registration'],\n",
" 'name': 'registration',\n",
" 'opt_deps': set()},\n",
" ('sample_consensus',): {'deps': {'common', 'search'},\n",
" 'desc': 'Point cloud sample consensus library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_sample_consensus'],\n",
" 'name': 'sample_consensus',\n",
" 'opt_deps': set()},\n",
" ('search',): {'deps': {'common', 'octree', 'kdtree'},\n",
" 'desc': 'Point cloud generic search library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_search'],\n",
" 'name': 'search',\n",
" 'opt_deps': {'flann'}},\n",
" ('segmentation',): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'kdtree',\n",
" 'ml',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search'},\n",
" 'desc': 'Point cloud segmentation library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_segmentation'],\n",
" 'name': 'segmentation',\n",
" 'opt_deps': set()},\n",
" ('simulation',): {'deps': {'common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'surface',\n",
" 'visualization'},\n",
" 'desc': 'Point Cloud Library Simulation',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_simulation'],\n",
" 'name': 'simulation',\n",
" 'opt_deps': {'opengl'}},\n",
" ('simulation', 'tools'): {'deps': set(),\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_tools'],\n",
" 'name': 'tools',\n",
" 'opt_deps': {'opengl'}},\n",
" ('stereo',): {'deps': {'io', 'common'},\n",
" 'desc': 'Point cloud stereo library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_stereo'],\n",
" 'name': 'stereo',\n",
" 'opt_deps': set()},\n",
" ('surface',): {'deps': {'common', 'octree', 'kdtree', 'search'},\n",
" 'desc': 'Point cloud surface library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_surface'],\n",
" 'name': 'surface',\n",
" 'opt_deps': {'vtk', 'qhull'}},\n",
" ('tools',): {'deps': {'io'},\n",
" 'desc': 'Useful PCL-based command line tools',\n",
" 'enabled_by_default': False,\n",
" 'export_pkgconfig': False,\n",
" 'header_only': None,\n",
" 'is_subcomponent': False,\n",
" 'libs': [],\n",
" 'name': 'tools',\n",
" 'opt_deps': {'davidsdk',\n",
" 'dssdk',\n",
" 'ensenso',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'kdtree',\n",
" 'keypoints',\n",
" 'ml',\n",
" 'octree',\n",
" 'openni',\n",
" 'openni2',\n",
" 'qhull',\n",
" 'recognition',\n",
" 'registration',\n",
" 'rssdk',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'visualization',\n",
" 'vtk'}},\n",
" ('tracking',): {'deps': {'common', 'filters', 'search', 'octree', 'kdtree'},\n",
" 'desc': 'Point cloud tracking library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_tracking'],\n",
" 'name': 'tracking',\n",
" 'opt_deps': set()},\n",
" ('visualization',): {'deps': {'common',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'vtk'},\n",
" 'desc': 'Point cloud visualization library',\n",
" 'enabled_by_default': True,\n",
" 'export_pkgconfig': True,\n",
" 'header_only': False,\n",
" 'is_subcomponent': False,\n",
" 'libs': ['pcl_visualization'],\n",
" 'name': 'visualization',\n",
" 'opt_deps': {'davidsdk',\n",
" 'dssdk',\n",
" 'ensenso',\n",
" 'opengl',\n",
" 'openni',\n",
" 'openni2',\n",
" 'qvtk',\n",
" 'rssdk'}}}\n"
]
}
],
"source": [
"props = {}\n",
"for cmake_file in cmakelists:\n",
" name = tuple(cmake_file.relative_to(source_path).parent.parts)\n",
" if name in [(\"cuda\",), (\"gpu\",)]:\n",
" continue\n",
" props[name] = read_props(cmake_file)\n",
" if \"gpu\" in name or \"cuda\" in name:\n",
" props[name][\"deps\"] |= {\"cuda\"}\n",
"props[(\"common\",)][\"deps\"] |= {\"boost\", \"eigen\"}\n",
"props[(\"io\",)][\"deps\"] -= {\"boost\", \"eigen\"}\n",
"pprint(props)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "93c5fdad-f78e-4247-bdfd-b534991aeecf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('2d', True),\n",
" ('common', True),\n",
" ('cuda_common', True),\n",
" ('cuda_features', True),\n",
" ('cuda_io', True),\n",
" ('cuda_sample_consensus', True),\n",
" ('cuda_segmentation', True),\n",
" ('features', True),\n",
" ('filters', True),\n",
" ('geometry', True),\n",
" ('gpu_containers', True),\n",
" ('gpu_features', True),\n",
" ('gpu_kinfu', True),\n",
" ('gpu_kinfu_large_scale', True),\n",
" ('gpu_octree', True),\n",
" ('gpu_people', False),\n",
" ('gpu_segmentation', True),\n",
" ('gpu_surface', False),\n",
" ('gpu_tracking', False),\n",
" ('gpu_utils', True),\n",
" ('io', True),\n",
" ('kdtree', True),\n",
" ('keypoints', True),\n",
" ('ml', True),\n",
" ('octree', True),\n",
" ('outofcore', True),\n",
" ('people', True),\n",
" ('recognition', True),\n",
" ('registration', True),\n",
" ('sample_consensus', True),\n",
" ('search', True),\n",
" ('segmentation', True),\n",
" ('simulation', False),\n",
" ('stereo', True),\n",
" ('surface', True),\n",
" ('tools', False),\n",
" ('tracking', True),\n",
" ('visualization', True)]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Components to add options for\n",
"sorted({d[\"name\"]: d[\"enabled_by_default\"] for k, d in props.items() if \"apps\" not in k and k not in {(\"cuda\",), (\"gpu\",)}}.items())"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "736ef76f-13ef-4381-9487-15c4bcfdb858",
"metadata": {},
"outputs": [],
"source": [
"root_components = {p[0] for p in props if len(p) == 1}\n",
"all_components = {d[\"name\"] for d in props.values()}\n",
"dep_map = {}\n",
"opt_dep_map = {}\n",
"int_dep_map = {}\n",
"int_opt_dep_map = {}\n",
"for name, d in props.items():\n",
" feat = {d[\"name\"]}\n",
" if d[\"name\"] == \"tools\":\n",
" feat = {name[0], \"tools\"}\n",
" elif \"apps\" in name:\n",
" feat = {name[0], \"apps\"}\n",
" feat = tuple(sorted(feat))\n",
" if feat not in dep_map:\n",
" dep_map[feat] = set()\n",
" if feat not in opt_dep_map:\n",
" opt_dep_map[feat] = set()\n",
" if feat not in int_dep_map:\n",
" int_dep_map[feat] = set()\n",
" if feat not in int_opt_dep_map:\n",
" int_opt_dep_map[feat] = set()\n",
" opt_dep_map[feat] |= d[\"opt_deps\"] - all_components\n",
" int_opt_dep_map[feat] |= d[\"opt_deps\"] & all_components\n",
" if len(name) > 1 and name[0] == \"apps\":\n",
" # All app deps are optional\n",
" opt_dep_map[feat] |= d[\"opt_deps\"] - all_components\n",
" int_opt_dep_map[feat] |= d[\"opt_deps\"] & all_components\n",
" else:\n",
" dep_map[feat] |= d[\"deps\"] - all_components\n",
" int_dep_map[feat] |= d[\"deps\"] & all_components"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3e777015-f664-4f16-a5f2-28da58fb7676",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['boost',\n",
" 'cuda',\n",
" 'davidsdk',\n",
" 'dssdk',\n",
" 'eigen',\n",
" 'ensenso',\n",
" 'flann',\n",
" 'fzapi',\n",
" 'libusb',\n",
" 'metslib',\n",
" 'opencv',\n",
" 'opengl',\n",
" 'openni',\n",
" 'openni2',\n",
" 'pcap',\n",
" 'png',\n",
" 'qhull',\n",
" 'qt',\n",
" 'qvtk',\n",
" 'rssdk',\n",
" 'rssdk2',\n",
" 'vtk']"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# All external deps\n",
"all_deps = set()\n",
"for deps in dep_map.values():\n",
" all_deps |= deps\n",
"for deps in opt_dep_map.values():\n",
" all_deps |= deps\n",
"sorted(all_deps)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "62fea229-c7aa-421c-b6b7-7f90a9c3fc7a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'common': ['boost', 'eigen'],\n",
" 'cuda_common': ['cuda'],\n",
" 'cuda_features': ['cuda'],\n",
" 'cuda_io': ['cuda', 'openni'],\n",
" 'cuda_sample_consensus': ['cuda'],\n",
" 'cuda_segmentation': ['cuda'],\n",
" 'gpu_containers': ['cuda'],\n",
" 'gpu_features': ['cuda'],\n",
" 'gpu_kinfu': ['cuda'],\n",
" 'gpu_kinfu_large_scale': ['cuda'],\n",
" 'gpu_octree': ['cuda'],\n",
" 'gpu_people': ['cuda'],\n",
" 'gpu_segmentation': ['cuda'],\n",
" 'gpu_surface': ['cuda'],\n",
" 'gpu_tracking': ['cuda'],\n",
" 'gpu_utils': ['cuda'],\n",
" 'people': ['vtk'],\n",
" 'visualization': ['vtk']}\n"
]
}
],
"source": [
"# Required external deps by component\n",
"pprint({k[0]: sorted(v) for k, v in dep_map.items() if v if v if \"apps\" not in k and \"tools\" not in k})"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "8d9c7380-1dc7-4097-9c1f-d0c1a045f223",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'2d': ['vtk'],\n",
" 'common': ['boost', 'eigen'],\n",
" 'io': ['davidsdk',\n",
" 'dssdk',\n",
" 'ensenso',\n",
" 'fzapi',\n",
" 'libusb',\n",
" 'openni',\n",
" 'openni2',\n",
" 'pcap',\n",
" 'png',\n",
" 'rssdk',\n",
" 'rssdk2',\n",
" 'vtk'],\n",
" 'kdtree': ['flann'],\n",
" 'people': ['openni'],\n",
" 'recognition': ['metslib'],\n",
" 'search': ['flann'],\n",
" 'simulation': ['opengl'],\n",
" 'surface': ['qhull', 'vtk'],\n",
" 'visualization': ['davidsdk',\n",
" 'dssdk',\n",
" 'ensenso',\n",
" 'opengl',\n",
" 'openni',\n",
" 'openni2',\n",
" 'qvtk',\n",
" 'rssdk']}\n"
]
}
],
"source": [
"# Optional external deps by component\n",
"pprint({k[0]: sorted(v) for k, v in opt_dep_map.items() if v if \"apps\" not in k and \"tools\" not in k})"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "9e2eed03-040c-4102-897d-9d0869aa77af",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'2d': ['common', 'filters'],\n",
" 'cuda_features': ['common', 'cuda_common', 'io'],\n",
" 'cuda_io': ['common', 'cuda_common', 'io'],\n",
" 'cuda_sample_consensus': ['common', 'cuda_common', 'io'],\n",
" 'cuda_segmentation': ['common', 'cuda_common', 'io'],\n",
" 'features': ['2d', 'common', 'filters', 'kdtree', 'octree', 'search'],\n",
" 'filters': ['common', 'kdtree', 'octree', 'sample_consensus', 'search'],\n",
" 'geometry': ['common'],\n",
" 'gpu_containers': ['common'],\n",
" 'gpu_features': ['common',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_octree',\n",
" 'gpu_utils'],\n",
" 'gpu_kinfu': ['common', 'geometry', 'gpu_containers', 'io', 'search'],\n",
" 'gpu_kinfu_large_scale': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_utils',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'surface'],\n",
" 'gpu_octree': ['common', 'gpu_containers', 'gpu_utils'],\n",
" 'gpu_people': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'gpu_containers',\n",
" 'gpu_utils',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'visualization'],\n",
" 'gpu_segmentation': ['common', 'gpu_containers', 'gpu_octree', 'gpu_utils'],\n",
" 'gpu_surface': ['common', 'geometry', 'gpu_containers', 'gpu_utils'],\n",
" 'gpu_tracking': ['common',\n",
" 'filters',\n",
" 'gpu_containers',\n",
" 'gpu_octree',\n",
" 'gpu_utils',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'tracking'],\n",
" 'gpu_utils': ['common', 'gpu_containers'],\n",
" 'io': ['common', 'octree'],\n",
" 'kdtree': ['common'],\n",
" 'keypoints': ['common', 'features', 'filters', 'kdtree', 'octree', 'search'],\n",
" 'ml': ['common'],\n",
" 'octree': ['common'],\n",
" 'outofcore': ['common', 'filters', 'io', 'octree', 'visualization'],\n",
" 'people': ['common',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'visualization'],\n",
" 'recognition': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'io',\n",
" 'kdtree',\n",
" 'ml',\n",
" 'octree',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search'],\n",
" 'registration': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search'],\n",
" 'sample_consensus': ['common', 'search'],\n",
" 'search': ['common', 'kdtree', 'octree'],\n",
" 'segmentation': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'kdtree',\n",
" 'ml',\n",
" 'octree',\n",
" 'sample_consensus',\n",
" 'search'],\n",
" 'simulation': ['common',\n",
" 'features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'io',\n",
" 'kdtree',\n",
" 'octree',\n",
" 'search',\n",
" 'surface',\n",
" 'visualization'],\n",
" 'stereo': ['common', 'io'],\n",
" 'surface': ['common', 'kdtree', 'octree', 'search'],\n",
" 'tracking': ['common', 'filters', 'kdtree', 'octree', 'search'],\n",
" 'visualization': ['common', 'geometry', 'io', 'kdtree', 'octree', 'search']}\n"
]
}
],
"source": [
"# Required internal deps by component\n",
"pprint({k[0]: sorted(v) for k, v in int_dep_map.items() if v if \"apps\" not in k and \"tools\" not in k})"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "0aa99b44-dc8a-47e4-8d06-1972510ac311",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{('tools',): ['features',\n",
" 'filters',\n",
" 'geometry',\n",
" 'kdtree',\n",
" 'keypoints',\n",
" 'ml',\n",
" 'octree',\n",
" 'recognition',\n",
" 'registration',\n",
" 'sample_consensus',\n",
" 'search',\n",
" 'segmentation',\n",
" 'surface',\n",
" 'visualization']}\n"
]
}
],
"source": [
"# Required internal deps by component\n",
"pprint({k: sorted(v) for k, v in int_opt_dep_map.items() if v})"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "34f90c4b-2242-46f4-940f-c233c1dd3627",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['cuda', 'libusb', 'opengl', 'openni', 'png', 'qhull', 'qt', 'qvtk', 'vtk'] ['2d', 'common', 'cuda_common', 'cuda_features', 'cuda_io', 'cuda_sample_consensus', 'cuda_segmentation', 'features', 'filters', 'geometry', 'io', 'kdtree', 'keypoints', 'ml', 'octree', 'recognition', 'registration', 'sample_consensus', 'search', 'segmentation', 'stereo', 'surface', 'tracking', 'visualization']\n",
"['cuda', 'davidsdk', 'dssdk', 'ensenso', 'opencv', 'opengl', 'openni', 'openni2', 'qhull', 'rssdk', 'vtk'] ['features', 'filters', 'geometry', 'gpu_kinfu', 'gpu_kinfu_large_scale', 'io', 'kdtree', 'keypoints', 'ml', 'octree', 'recognition', 'registration', 'sample_consensus', 'search', 'segmentation', 'surface', 'visualization']\n"
]
}
],
"source": [
"apps_ext_opt_deps = set()\n",
"apps_int_opt_deps = set()\n",
"tools_ext_opt_deps = set()\n",
"tools_int_opt_deps = set()\n",
"for k, v in dep_map.items():\n",
" if \"apps\" in k:\n",
" apps_ext_opt_deps |= v\n",
"for k, v in opt_dep_map.items():\n",
" if \"apps\" in k:\n",
" apps_ext_opt_deps |= v\n",
"for k, v in int_dep_map.items():\n",
" if \"apps\" in k:\n",
" apps_int_opt_deps |= v\n",
"for k, v in int_opt_dep_map.items():\n",
" if \"apps\" in k:\n",
" apps_int_opt_deps |= v\n",
" \n",
"for k, v in dep_map.items():\n",
" if \"tools\" in k:\n",
" tools_ext_opt_deps |= v\n",
"for k, v in opt_dep_map.items():\n",
" if \"tools\" in k:\n",
" tools_ext_opt_deps |= v\n",
"for k, v in int_dep_map.items():\n",
" if \"tools\" in k:\n",
" tools_int_opt_deps |= v\n",
"for k, v in int_opt_dep_map.items():\n",
" if \"tools\" in k:\n",
" tools_int_opt_deps |= v\n",
"\n",
"print(sorted(apps_ext_opt_deps), sorted(apps_int_opt_deps))\n",
"print(sorted(tools_ext_opt_deps), sorted(tools_int_opt_deps))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "2f48ee50-b816-442a-a699-3f68d21c8890",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'2d', 'cuda_common', 'geometry'}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# All header-only components\n",
"{d[\"name\"] for path, d in props.items() if d[\"header_only\"]}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f7a49918-1408-4322-aa98-328a9153c3b2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cloud_composer': {'pcl_cc_tool_interface'}, 'io': {'pcl_io_ply'}}"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# All extra libs\n",
"extra_libs = {d[\"name\"]: set(d[\"libs\"]) - {f\"pcl_{d['name']}\"} for path, d in props.items()}\n",
"{k: v for k, v in extra_libs.items() if v}"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6f4dcd94-8a11-44f3-b109-6094bd3ab996",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment