| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- name: Build
- on: [ push, pull_request ]
- jobs:
- build:
- name: ${{ matrix.config.name }}
- runs-on: ${{ matrix.config.os }}
- if: "!contains(github.event.head_commit.message, '[skip ci]')"
- strategy:
- fail-fast: false
- matrix:
- config:
- - {
- name: "Windows MSVC",
- os: windows-latest,
- generator: "Ninja",
- conda_library_dir: "Library",
- compile_riegl: "ON",
- conda_dep_file: ".ci/conda-win.yml"
- }
- - {
- name: "macOS Clang",
- os: macos-latest,
- generator: "Ninja",
- conda_library_dir: ".",
- compile_riegl: "OFF",
- conda_dep_file: ".ci/conda-macos.yml"
- }
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- submodules: recursive
- # DGM: without caching, using conda on Windows takes a long time...
- - name: Install Dependencies
- uses: conda-incubator/setup-miniconda@v3
- with:
- architecture: ${{ matrix.config.os == 'macos-latest' && 'arm64' || 'x64' }}
- activate-environment: CloudCompareDev
- auto-activate-base: false
- environment-file: ${{ matrix.config.conda_dep_file }}
- - name: Configure MSVC console (Windows)
- if: matrix.config.os == 'windows-latest'
- uses: ilammy/msvc-dev-cmd@v1
- - name: Set environment for MSVC (Windows)
- if: matrix.config.os == 'windows-latest'
- run: |
- # Set these env vars so cmake picks the correct compiler
- # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
- echo "CXX=cl.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- echo "CC=cl.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
- - name: Configure CMake
- shell: bash -l {0}
- run: |
- mkdir build
- export CONDA_LIB_DIR="$CONDA_PREFIX/${{ matrix.config.conda_library_dir }}"
- export EIGEN_ROOT_DIR="$CONDA_LIB_DIR/include/eigen3"
- cmake \
- -B build \
- -G "${{ matrix.config.generator }}" \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_PREFIX_PATH="$CONDA_LIB_DIR" \
- -DEIGEN_ROOT_DIR="$EIGEN_ROOT_DIR" \
- -DOPTION_SUPPORT_GAMEPADS=ON \
- -DPLUGIN_EXAMPLE_GL=ON \
- -DPLUGIN_EXAMPLE_IO=ON \
- -DPLUGIN_EXAMPLE_STANDARD=ON \
- -DPLUGIN_GL_QEDL=ON \
- -DPLUGIN_GL_QSSAO=ON \
- -DPLUGIN_IO_QADDITIONAL=ON \
- -DPLUGIN_IO_QCORE=ON \
- -DPLUGIN_IO_QE57=ON \
- -DPLUGIN_IO_QPHOTOSCAN=ON \
- -DPLUGIN_IO_QLAS=ON \
- -DPLUGIN_IO_QRDB=${{ matrix.config.compile_riegl }} \
- -DPLUGIN_IO_QRDB_FETCH_DEPENDENCY=${{ matrix.config.compile_riegl }} \
- -DPLUGIN_IO_QRDB_INSTALL_DEPENDENCY=${{ matrix.config.compile_riegl }} \
- -DPLUGIN_STANDARD_QANIMATION=ON \
- -DQANIMATION_WITH_FFMPEG_SUPPORT=ON \
- -DPLUGIN_STANDARD_QBROOM=ON \
- -DPLUGIN_STANDARD_QCANUPO=OFF \
- -DPLUGIN_STANDARD_QCOMPASS=ON \
- -DPLUGIN_STANDARD_QCSF=ON \
- -DPLUGIN_STANDARD_QFACETS=ON \
- -DPLUGIN_STANDARD_QHOUGH_NORMALS=ON \
- -DPLUGIN_STANDARD_QHPR=ON \
- -DPLUGIN_STANDARD_QM3C2=ON \
- -DPLUGIN_STANDARD_QPCV=ON \
- -DPLUGIN_STANDARD_QPOISSON_RECON=ON \
- -DPLUGIN_STANDARD_QSRA=ON \
- -DPLUGIN_STANDARD_QRANSAC_SD=ON \
- -DPLUGIN_STANDARD_QPCL=ON \
- -DPLUGIN_STANDARD_QCLOUDLAYERS=ON \
- -DPLUGIN_STANDARD_QVOXFALL=ON \
- .
- - name: Build
- run: cmake --build build --parallel
- - name: Install (macOs)
- if: matrix.config.os == 'macos-latest'
- run: sudo cmake --install build
- - name: Install (Windows)
- if: matrix.config.os == 'windows-latest'
- run: cmake --install build
- ubuntu-build:
- name: Ubuntu ${{ matrix.compiler }}
- runs-on: ubuntu-22.04
- if: "!contains(github.event.head_commit.message, '[skip ci]')"
- strategy:
- fail-fast: false
- matrix:
- compiler: ["GCC", "Clang"]
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- submodules: recursive
- - name: Install Dependencies
- run: >
- sudo apt-get update -qq
- sudo apt-get install -qy cmake ninja-build
- libqt5svg5-dev libqt5opengl5-dev qtbase5-dev qttools5-dev qttools5-dev-tools libqt5websockets5-dev
- libtbb-dev
- libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
- libboost-program-options-dev libboost-thread-dev
- libeigen3-dev
- libcgal-dev libcgal-qt5-dev libgdal-dev libpcl-dev
- libdlib-dev libproj-dev libxerces-c-dev xvfb libjsoncpp-dev liblaszip-dev
- - name: Setup GCC
- if: matrix.compiler == 'GCC'
- run: |
- echo "CC=gcc" >> $GITHUB_ENV
- echo "CXX=g++" >> $GITHUB_ENV
- - name: Setup Clang
- if: matrix.compiler == 'Clang'
- run: |
- echo "CC=clang" >> $GITHUB_ENV
- echo "CXX=clang++" >> $GITHUB_ENV
- - name: Configure cmake
- run: >
- mkdir build
- cmake
- -B build
- -S .
- -G Ninja
- -DEIGEN_ROOT_DIR=/usr/include/eigen3
- -DJSON_ROOT_DIR=/usr/include/jsoncpp
- -DDLIB_ROOT=/usr/include
- -DCCCORELIB_USE_TBB=ON
- -DPLUGIN_EXAMPLE_GL=ON
- -DPLUGIN_EXAMPLE_IO=ON
- -DPLUGIN_EXAMPLE_STANDARD=ON
- -DPLUGIN_GL_QEDL=ON
- -DPLUGIN_GL_QSSAO=ON
- -DPLUGIN_IO_QADDITIONAL=ON
- -DPLUGIN_IO_QCORE=ON
- -DPLUGIN_IO_QE57=ON
- -DE57_RELEASE_LTO=OFF
- -DPLUGIN_IO_QPHOTOSCAN=ON
- -DPLUGIN_IO_QLAS=ON
- -DPLUGIN_IO_QRDB=ON
- -DPLUGIN_IO_QRDB_FETCH_DEPENDENCY=ON
- -DPLUGIN_IO_QRDB_INSTALL_DEPENDENCY=ON
- -DPLUGIN_STANDARD_QANIMATION=ON
- -DQANIMATION_WITH_FFMPEG_SUPPORT=OFF
- -DPLUGIN_STANDARD_QBROOM=ON
- -DPLUGIN_STANDARD_QCANUPO=ON
- -DPLUGIN_STANDARD_QCOMPASS=ON
- -DPLUGIN_STANDARD_QCSF=ON
- -DPLUGIN_STANDARD_QFACETS=ON
- -DPLUGIN_STANDARD_QHOUGH_NORMALS=ON
- -DPLUGIN_STANDARD_QHPR=ON
- -DPLUGIN_STANDARD_QM3C2=ON
- -DPLUGIN_STANDARD_QPCV=ON
- -DPLUGIN_STANDARD_QPOISSON_RECON=ON
- -DPLUGIN_STANDARD_QSRA=ON
- -DPLUGIN_STANDARD_QRANSAC_SD=ON
- -DPLUGIN_STANDARD_QPCL=ON
- -DPLUGIN_STANDARD_QCLOUDLAYERS=ON
- -DPLUGIN_STANDARD_QVOXFALL=ON
- -DBUILD_TESTING=ON
- - name: Build
- run: cmake --build build --parallel
- - name: Test
- run: xvfb-run ctest --test-dir build
- - name: Install
- run: sudo cmake --install build
|