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
)

