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