> For the complete documentation index, see [llms.txt](https://pcl.gitbook.io/tutorial/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pcl.gitbook.io/tutorial/appendix/cling_pcl.md).

# Cling\_PCL

## 1. 설치

```python
# 사전 설치 
$ sudo apt install zeromq #ubuntu 16
$ sudo apt instal libzmq3-dev
$ wget https://gist.githubusercontent.com/katopz/8b766a5cb0ca96c816658e9407e83d00/raw/bc93fda1fe2fe5c6f45648ba131596134d92f7dc/setup-zeromq.sh

# 바이너리 다운로드 및 설치 
$ tar xvf cling_2020-03-11_ubuntu18.tar.bz2 # https://root.cern.ch/download/cling/
$ cd cling_2020-03-11_ubuntu18/share/cling/Jupyter/kernel/
$ pip3 install -e .

# 쥬피터 등록 
$ jupyter-kernelspec install --user cling-cpp17
# 필요시 PATH등록
```

> [소스 설치](https://root.cern.ch/cling-build-instructions) [\[스크립트\]](https://github.com/Axel-Naumann/cling-all-in-one)

## 2. 테스트

### 2.1 print

![](https://i.imgur.com/YKWnw9Q.png)

```cpp
#pragma cling add_library_path("/usr/lib/x86_64-linux-gnu")
#pragma cling load("libboost_system.so")
#pragma cling load("libpcl_io.so")
#pragma cling add_include_path("/usr/include/pcl-1.8")
#pragma cling add_include_path("/usr/include/eigen3")
#pragma cling add_include_path("/usr/include/vtk-6.3")

#include <iostream>
#include <pcl/ModelCoefficients.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/sample_consensus/method_types.h>
#include <pcl/sample_consensus/model_types.h>
#include <pcl/segmentation/sac_segmentation.h>
#include <pcl/filters/extract_indices.h>

pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGB>);
pcl::io::loadPCDFile<pcl::PointXYZRGB> ("tabletop_passthrough.pcd", *cloud);
std::cerr << "PointCloud before filtering: " << cloud->width * cloud->height << " data points (" << pcl::getFieldsList (*cloud) << ").";
```

### 2.2 [시각화](https://github.com/jolesinski/cling-pcl-tutorial)

![](https://i.imgur.com/kdKsB34.png)

```cpp
#pragma cling add_library_path("/usr/lib/x86_64-linux-gnu")
#pragma cling load("libpcl_visualization.so") // .L /usr/local/lib/libpcl_visualization.so

// Include dirs
#pragma cling add_include_path("/usr/include/pcl-1.8") // .I /usr/local/include/pcl-1.8
#pragma cling add_include_path("/usr/include/eigen3") // .I /usr/local/include/eigen3
#pragma cling add_include_path("/usr/include/vtk-6.3") // .I /usr/include/vtk-6.2

#include <pcl/visualization/pcl_visualizer.h>
auto viewer = pcl::visualization::PCLVisualizer("test");

viewer.setBackgroundColor(0,0,0);
viewer.addCoordinateSystem(0.5);
viewer.initCameraParameters();
viewer.addSphere(pcl::PointXYZ{1,1,1}, 0.2, 0.3, 0.3, 0.0, "sphere");
viewer.spin();
```

## 3. [도움말 ](https://xeus-cling.readthedocs.io/en/latest/magics.html)

```cpp
.? // help
.I <path> //Adds an include path;
.include //Show include path
.L <library | filename.cxx> // loads library or filename.cxx
.files //Show all loaded files
.q // quit ROOT
.L  file.C // Load  file.C
.x  file.C //Load  file.C  and run its function  file()
.U  file.C //Unload  file.C
.class C // Print what cling knows about class C
.O0 // (dot oh-zero) // Disable cling's optimization (for debugging)
.! cmd // Run shell command cmd
.@ //Cancels the multiline input
.printAST // (DEBUG ONLY) Turns on the printing of the compiler's abstract syntax tree (AST);
```

> [Advices and Gotchas when using cling and jupyter](https://code-ballads.net/generated-notebooks/cpp/repl_cling/notebooks/3_Advices_And_Gotchas.html)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://pcl.gitbook.io/tutorial/appendix/cling_pcl.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
