An action for building CMake projects that uses Point Cloud Library (PCL), VTK and/or QT dependencies.
This action uses a pre-compiled pcl-docker-alpine image with aditional developer tools for compilation. This Action provides a Docker container environment with the installation of the Point Cloud Library (PCL), VTK, Boost, Eigen, Flann and OpenGL.
The GITHUB_WORKSPACE repository is mounted into the docker container where a cmake command compiles the project in a build/ directory. After the compiling process is done, the build folder remain in the GITHUB_WORKSPACE repository.
Note: This action assumes that the main CMakeLists.txt file is located at the top level (root) of the repository.
Docker Image installed libraries:
| Package | Version | Description |
|---|---|---|
| VTK | 9.1.0 | The Visualization Toolkit |
| PCL | 1.12.1 | The Point Cloud Library (PCL) |
| Eigen | 3.7.7 | Eigen is a library of template headers for linear algebra |
| Flann | 1.9.1 | Fast Library for Approximate Nearest Neighbors |
| Boost | 1.77.0 | Provides support for linear algebra, pseudorandom number generation, multithreading |
| OpenGL | 21.2.6 | Programming interface for rendering 2D and 3D vector graphics. |
Docker Image compiled modules for PCL:
The following subsystems were built: -- common -- kdtree -- octree -- search -- geometry -- io -- visualization -- sample_consensus -- filters -- 2d -- features -- ml -- segmentation -- surface -- registration -- keypoints -- tracking -- recognition -- stereo -- apps -- benchmarks: Disabled by default -- outofcore -- examples: Code examples are disabled by default. -- people -- simulation -- global_tests: Disabled by default -- tools Docker Image installed dev tools:
| Package | Version | Description |
|---|---|---|
| CMake | 3.21.3 | Software for build automation |
| build-base | 0.4-r1 | Meta package with gcc, g++, make |
steps: - name: Clone repository uses: actions/checkout@v3 - name: PCL Build Action uses: danielTobon43/PCL-Build-Action@v1 steps: - name: Clone repository uses: actions/checkout@v3 - name: PCL Build Action uses: danielTobon43/PCL-Build-Action@v1 with: build_type: Release (Release, Debug, RelWithDebInfo, etc.) To provide CMake ARGS to the build process such as: CMAKE_CXX_COMPILER, CMAKE_INSTALL_PREFIX, etc. Check the feat-cmake-flags branch.
More information about usage, here
PCL 1.12.1 has AVX CPU support. Make sure your development environment supports AVX instructions. If not, you must provide the -mno-avx flag in your CMakeLists.txt file or the appropriate flags for your application, see these posts:
e.g.
target_compile_options(${PROJECT_NAME} PRIVATE -Wno-cpp -mmmx -msse -msse2 -msse3 -mssse3 -msse4.2 -msse4.1 -mno-sse4a -mno-avx -mno-avx2 -mno-fma -mno-fma4 -mno-f16c -mno-xop -mno-bmi -mno-bmi2 -mrdrnd -mno-3dnow -mlzcnt -mfsgsbase -mpclmul ) 
