build.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. name: Build
  2. on: [ push, pull_request ]
  3. jobs:
  4. build:
  5. name: ${{ matrix.config.name }}
  6. runs-on: ${{ matrix.config.os }}
  7. if: "!contains(github.event.head_commit.message, '[skip ci]')"
  8. strategy:
  9. fail-fast: false
  10. matrix:
  11. config:
  12. - {
  13. name: "Windows MSVC",
  14. os: windows-latest,
  15. generator: "Ninja",
  16. conda_library_dir: "Library",
  17. compile_riegl: "ON",
  18. conda_dep_file: ".ci/conda-win.yml"
  19. }
  20. - {
  21. name: "macOS Clang",
  22. os: macos-latest,
  23. generator: "Ninja",
  24. conda_library_dir: ".",
  25. compile_riegl: "OFF",
  26. conda_dep_file: ".ci/conda-macos.yml"
  27. }
  28. steps:
  29. - name: Checkout
  30. uses: actions/checkout@v4
  31. with:
  32. submodules: recursive
  33. # DGM: without caching, using conda on Windows takes a long time...
  34. - name: Install Dependencies
  35. uses: conda-incubator/setup-miniconda@v3
  36. with:
  37. architecture: ${{ matrix.config.os == 'macos-latest' && 'arm64' || 'x64' }}
  38. activate-environment: CloudCompareDev
  39. auto-activate-base: false
  40. environment-file: ${{ matrix.config.conda_dep_file }}
  41. - name: Configure MSVC console (Windows)
  42. if: matrix.config.os == 'windows-latest'
  43. uses: ilammy/msvc-dev-cmd@v1
  44. - name: Set environment for MSVC (Windows)
  45. if: matrix.config.os == 'windows-latest'
  46. run: |
  47. # Set these env vars so cmake picks the correct compiler
  48. # https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
  49. echo "CXX=cl.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
  50. echo "CC=cl.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
  51. - name: Configure CMake
  52. shell: bash -l {0}
  53. run: |
  54. mkdir build
  55. export CONDA_LIB_DIR="$CONDA_PREFIX/${{ matrix.config.conda_library_dir }}"
  56. export EIGEN_ROOT_DIR="$CONDA_LIB_DIR/include/eigen3"
  57. cmake \
  58. -B build \
  59. -G "${{ matrix.config.generator }}" \
  60. -DCMAKE_BUILD_TYPE=Release \
  61. -DCMAKE_PREFIX_PATH="$CONDA_LIB_DIR" \
  62. -DEIGEN_ROOT_DIR="$EIGEN_ROOT_DIR" \
  63. -DOPTION_SUPPORT_GAMEPADS=ON \
  64. -DPLUGIN_EXAMPLE_GL=ON \
  65. -DPLUGIN_EXAMPLE_IO=ON \
  66. -DPLUGIN_EXAMPLE_STANDARD=ON \
  67. -DPLUGIN_GL_QEDL=ON \
  68. -DPLUGIN_GL_QSSAO=ON \
  69. -DPLUGIN_IO_QADDITIONAL=ON \
  70. -DPLUGIN_IO_QCORE=ON \
  71. -DPLUGIN_IO_QE57=ON \
  72. -DPLUGIN_IO_QPHOTOSCAN=ON \
  73. -DPLUGIN_IO_QLAS=ON \
  74. -DPLUGIN_IO_QRDB=${{ matrix.config.compile_riegl }} \
  75. -DPLUGIN_IO_QRDB_FETCH_DEPENDENCY=${{ matrix.config.compile_riegl }} \
  76. -DPLUGIN_IO_QRDB_INSTALL_DEPENDENCY=${{ matrix.config.compile_riegl }} \
  77. -DPLUGIN_STANDARD_QANIMATION=ON \
  78. -DQANIMATION_WITH_FFMPEG_SUPPORT=ON \
  79. -DPLUGIN_STANDARD_QBROOM=ON \
  80. -DPLUGIN_STANDARD_QCANUPO=OFF \
  81. -DPLUGIN_STANDARD_QCOMPASS=ON \
  82. -DPLUGIN_STANDARD_QCSF=ON \
  83. -DPLUGIN_STANDARD_QFACETS=ON \
  84. -DPLUGIN_STANDARD_QHOUGH_NORMALS=ON \
  85. -DPLUGIN_STANDARD_QHPR=ON \
  86. -DPLUGIN_STANDARD_QM3C2=ON \
  87. -DPLUGIN_STANDARD_QPCV=ON \
  88. -DPLUGIN_STANDARD_QPOISSON_RECON=ON \
  89. -DPLUGIN_STANDARD_QSRA=ON \
  90. -DPLUGIN_STANDARD_QRANSAC_SD=ON \
  91. -DPLUGIN_STANDARD_QPCL=ON \
  92. -DPLUGIN_STANDARD_QCLOUDLAYERS=ON \
  93. -DPLUGIN_STANDARD_QVOXFALL=ON \
  94. .
  95. - name: Build
  96. run: cmake --build build --parallel
  97. - name: Install (macOs)
  98. if: matrix.config.os == 'macos-latest'
  99. run: sudo cmake --install build
  100. - name: Install (Windows)
  101. if: matrix.config.os == 'windows-latest'
  102. run: cmake --install build
  103. ubuntu-build:
  104. name: Ubuntu ${{ matrix.compiler }}
  105. runs-on: ubuntu-22.04
  106. if: "!contains(github.event.head_commit.message, '[skip ci]')"
  107. strategy:
  108. fail-fast: false
  109. matrix:
  110. compiler: ["GCC", "Clang"]
  111. steps:
  112. - name: Checkout
  113. uses: actions/checkout@v4
  114. with:
  115. submodules: recursive
  116. - name: Install Dependencies
  117. run: >
  118. sudo apt-get update -qq
  119. sudo apt-get install -qy cmake ninja-build
  120. libqt5svg5-dev libqt5opengl5-dev qtbase5-dev qttools5-dev qttools5-dev-tools libqt5websockets5-dev
  121. libtbb-dev
  122. libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
  123. libboost-program-options-dev libboost-thread-dev
  124. libeigen3-dev
  125. libcgal-dev libcgal-qt5-dev libgdal-dev libpcl-dev
  126. libdlib-dev libproj-dev libxerces-c-dev xvfb libjsoncpp-dev liblaszip-dev
  127. - name: Setup GCC
  128. if: matrix.compiler == 'GCC'
  129. run: |
  130. echo "CC=gcc" >> $GITHUB_ENV
  131. echo "CXX=g++" >> $GITHUB_ENV
  132. - name: Setup Clang
  133. if: matrix.compiler == 'Clang'
  134. run: |
  135. echo "CC=clang" >> $GITHUB_ENV
  136. echo "CXX=clang++" >> $GITHUB_ENV
  137. - name: Configure cmake
  138. run: >
  139. mkdir build
  140. cmake
  141. -B build
  142. -S .
  143. -G Ninja
  144. -DEIGEN_ROOT_DIR=/usr/include/eigen3
  145. -DJSON_ROOT_DIR=/usr/include/jsoncpp
  146. -DDLIB_ROOT=/usr/include
  147. -DCCCORELIB_USE_TBB=ON
  148. -DPLUGIN_EXAMPLE_GL=ON
  149. -DPLUGIN_EXAMPLE_IO=ON
  150. -DPLUGIN_EXAMPLE_STANDARD=ON
  151. -DPLUGIN_GL_QEDL=ON
  152. -DPLUGIN_GL_QSSAO=ON
  153. -DPLUGIN_IO_QADDITIONAL=ON
  154. -DPLUGIN_IO_QCORE=ON
  155. -DPLUGIN_IO_QE57=ON
  156. -DE57_RELEASE_LTO=OFF
  157. -DPLUGIN_IO_QPHOTOSCAN=ON
  158. -DPLUGIN_IO_QLAS=ON
  159. -DPLUGIN_IO_QRDB=ON
  160. -DPLUGIN_IO_QRDB_FETCH_DEPENDENCY=ON
  161. -DPLUGIN_IO_QRDB_INSTALL_DEPENDENCY=ON
  162. -DPLUGIN_STANDARD_QANIMATION=ON
  163. -DQANIMATION_WITH_FFMPEG_SUPPORT=OFF
  164. -DPLUGIN_STANDARD_QBROOM=ON
  165. -DPLUGIN_STANDARD_QCANUPO=ON
  166. -DPLUGIN_STANDARD_QCOMPASS=ON
  167. -DPLUGIN_STANDARD_QCSF=ON
  168. -DPLUGIN_STANDARD_QFACETS=ON
  169. -DPLUGIN_STANDARD_QHOUGH_NORMALS=ON
  170. -DPLUGIN_STANDARD_QHPR=ON
  171. -DPLUGIN_STANDARD_QM3C2=ON
  172. -DPLUGIN_STANDARD_QPCV=ON
  173. -DPLUGIN_STANDARD_QPOISSON_RECON=ON
  174. -DPLUGIN_STANDARD_QSRA=ON
  175. -DPLUGIN_STANDARD_QRANSAC_SD=ON
  176. -DPLUGIN_STANDARD_QPCL=ON
  177. -DPLUGIN_STANDARD_QCLOUDLAYERS=ON
  178. -DPLUGIN_STANDARD_QVOXFALL=ON
  179. -DBUILD_TESTING=ON
  180. - name: Build
  181. run: cmake --build build --parallel
  182. - name: Test
  183. run: xvfb-run ctest --test-dir build
  184. - name: Install
  185. run: sudo cmake --install build