version: 0.{build}-{branch} # don't build tags skip_tags: true # exclude gh-pages branch branches: except: - gh-pages shallow_clone: true # auto-build VSProject: OFF build: false #configurations to build configuration: - Release # - debug # define build matrix environment: global: JOMDIR: C:\Qt\Tools\QtCreator\bin VSVER: 0 CMAKE_BUILDFLAGS: USE_CMAKE: true INSTALL_QMAKE5: false matrix: - NAME: "Ubuntu2004: QMake, Qt6" QTABI: gcc_64 COMPILER: GCC QTVER: 5.15 USE_CMAKE: false APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 CMAKE_GENERATOR: "Unix Makefiles" INSTALL_QMAKE5: true TEST_FETCHCONTENT: false - NAME: "MSVC64: CMake, Qt5" QTABI: msvc2019_64 COMPILER: MSVC QTVER: 5.15 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 CMAKE_GENERATOR: "Visual Studio 16 2019" CMAKE_BUILDFLAGS: /verbosity:minimal /maxcpucount TEST_FETCHCONTENT: false - NAME: "MSVC64: CMake, Qt6" QTABI: msvc2019_64 COMPILER: MSVC QTVER: 6.4 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 CMAKE_GENERATOR: "Visual Studio 16 2019" CMAKE_BUILDFLAGS: /verbosity:minimal /maxcpucount TEST_FETCHCONTENT: false - NAME: "Ubuntu2004: CMake, Qt5" QTABI: gcc_64 COMPILER: GCC QTVER: 5.15 APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 CMAKE_GENERATOR: "Unix Makefiles" INSTALL_QMAKE5: true TEST_FETCHCONTENT: false - NAME: "Ubuntu2004: CMake, Qt6" QTABI: gcc_64 COMPILER: GCC QTVER: 6.4 APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 CMAKE_GENERATOR: "Unix Makefiles" INSTALL_QMAKE5: true TEST_FETCHCONTENT: false - NAME: "Ubuntu2004: CMake-FetchContent, Qt6" QTABI: gcc_64 COMPILER: GCC QTVER: 6.4 APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 CMAKE_GENERATOR: "Unix Makefiles" TEST_FETCHCONTENT: true - NAME: "MacOS: CMake, Qt6" QTABI: macos COMPILER: CLANG QTVER: 6.4 APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey CMAKE_GENERATOR: "Unix Makefiles" TEST_FETCHCONTENT: false for: # Windows (MinGW 8.1 & MSVC2019) - matrix: only: - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 init: - cmd: echo == INIT SYSTEM ENVIRONMENT ====================================================================== - cmd: echo NUMBER_OF_PROCESSORS=%NUMBER_OF_PROCESSORS% - cmd: echo PROCESSOR_IDENTIFIER=%PROCESSOR_IDENTIFIER% - cmd: echo APPVEYOR_BUILD_WORKER_IMAGE=%APPVEYOR_BUILD_WORKER_IMAGE% - cmd: echo QTABI=%QTABI% - cmd: echo CMAKE_GENERATOR=%CMAKE_GENERATOR% - cmd: echo CMAKE_BUILDFLAGS=%CMAKE_BUILDFLAGS% install: # Init compiler environment - cmd: echo == INIT COMPILER ENVIRONMENT ==================================================================== - cmd: set QTDIR=C:\Qt\%QTVER%\%QTABI%\bin - cmd: set QT_DIR=C:\Qt\%QTVER%\%QTABI%\bin - cmd: set PATH=%QTDIR%;%JOMDIR%;%PATH% - cmd: if %COMPILER%==MinGW set "PATH=%MINGWDIR%\bin;%PATH%" - cmd: if %QTABI%==msvc2019 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat" - cmd: if %QTABI%==msvc2019_64 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" # Rename sh.exe as sh.exe in PATH interferes with MinGW - cmd: if %COMPILER%==MinGW rename "C:\Program Files\Git\usr\bin\sh.exe" "sh2.exe" - cmd: echo QTDIR=%QTDIR% - cmd: echo QT_DIR=%QT_DIR% - cmd: echo JOMDIR=%JOMDIR% - cmd: echo PATH=%PATH% # Install OpenCV - cmd: echo == INSTALL OPENCV =============================================================================== - cmd: choco install OpenCV - cmd: set OPENCV_DIR=C:\tools\opencv\build - cmd: echo OPENCV_DIR=%OPENCV_DIR% # Install CImg - cmd: echo == INSTALL CIMG ================================================================================= - cmd: mkdir C:\tools\cimg - cmd: git clone --depth=1 https://github.com/dtschump/CImg.git C:\tools\cimg - cmd: set CIMG_DIR=C:\tools\cimg - cmd: echo CIMG_DIR=%CIMG_DIR% - cmd: set CIMG_INCLUDE_DIR=C:\tools\cimg - cmd: echo CIMG_INCLUDE_DIR=%CIMG_INCLUDE_DIR% build_script: - cmd: echo == BUILD JKQtPlotter ============================================================================ - cmd: cd %APPVEYOR_BUILD_FOLDER% - cmd: mkdir build - cmd: mkdir install - cmd: cd build - cmd: if %USE_CMAKE%==true cmake --version - cmd: if %USE_CMAKE%==true cmake -G "%CMAKE_GENERATOR%" "-DCMAKE_PREFIX_PATH=%QTDIR%;%CIMG_INCLUDE_DIR%" "-DCMAKE_INSTALL_PREFIX=%APPVEYOR_BUILD_FOLDER%\install" .. - cmd: if %USE_CMAKE%==true cmake --build . --config "%CONFIGURATION%" -j%NUMBER_OF_PROCESSORS% -- %CMAKE_BUILDFLAGS% - cmd: if %USE_CMAKE%==false qmake.exe -v - cmd: if %USE_CMAKE%==false qmake.exe CONFIG+=%CONFIGURATION% ..\JKQtPlotterBuildAllExamples.pro - cmd: if %USE_CMAKE%==false call %MAKETOOL% - cmd: cd .. - cmd: echo == INSTALL JKQtPlotter ========================================================================== - cmd: cd %APPVEYOR_BUILD_FOLDER% - cmd: cd build - cmd: if %USE_CMAKE%==true cmake --install . --config "%CONFIGURATION%" after_build: - cmd: echo == TEST USE JKQtPlotter CMAKE BUILD ============================================================ - cmd: cd %APPVEYOR_BUILD_FOLDER% - cmd: if %USE_CMAKE%==true cd examples - cmd: if %USE_CMAKE%==true cd cmake_link_example - cmd: if %USE_CMAKE%==true mkdir build - cmd: if %USE_CMAKE%==true cd build - cmd: if %USE_CMAKE%==true cmake -G "%CMAKE_GENERATOR%" "-DCMAKE_PREFIX_PATH=%QTDIR%;%CIMG_INCLUDE_DIR%;%APPVEYOR_BUILD_FOLDER%\install" .. - cmd: if %USE_CMAKE%==true cmake --build . --config "%CONFIGURATION%" -j%NUMBER_OF_PROCESSORS% -- %CMAKE_BUILDFLAGS% - cmd: cd .. test_script: - cmd: if %USE_CMAKE%==true echo == RUNNING UNIT TESTS FOR JKQtPlotter CMAKE BUILD =============================================== - cmd: if %USE_CMAKE%==true cd %APPVEYOR_BUILD_FOLDER% - cmd: if %USE_CMAKE%==true cd build - cmd: if %USE_CMAKE%==true ctest --version - cmd: if %USE_CMAKE%==true ctest --print-labels --build-config "%CONFIGURATION%" - cmd: if %USE_CMAKE%==true ctest --build-config "%CONFIGURATION%" -VV --output-on-failure --output-junit %APPVEYOR_BUILD_FOLDER%\build\test-results.xml after_test: - ps: | If (Test-Path %APPVEYOR_BUILD_FOLDER%\build\test-results.xml) { (new-object net.webclient).UploadFile( "https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path %APPVEYOR_BUILD_FOLDER%\build\test-results.xml) ) } $LastExitCode = 0 # Linux (Ubuntu2004) - matrix: only: - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 init: - sh: echo == INIT SYSTEM ENVIRONMENT ====================================================================== - sh: echo _NPROCESSORS_ONLN=$(getconf _NPROCESSORS_ONLN) - sh: echo APPVEYOR_BUILD_WORKER_IMAGE=$APPVEYOR_BUILD_WORKER_IMAGE - sh: echo QTABI=$QTABI - sh: echo CMAKE_GENERATOR=$CMAKE_GENERATOR - sh: cmake --version install: # Init compiler environment - sh: echo == INIT COMPILER ENVIRONMENT ==================================================================== - sh: export QTDIR=$HOME/Qt/$QTVER/$QTABI/ - sh: export QT_DIR=$HOME/Qt/$QTVER/$QTABI/ - sh: export Qt5_DIR=$QTDIR/lib/cmake - sh: sudo ls /etc/apt/sources.list.d/ #- sh: sudo rm /etc/apt/sources.list.d/github_git-lfs.list - sh: sudo apt update -yy --allow-releaseinfo-change - sh: if [ "$INSTALL_QMAKE5" = true ]; then sudo apt install -y build-essential git mesa-common-dev libglu1-mesa-dev qt5-qmake ; fi - sh: if [ "$INSTALL_QMAKE5" = false ]; then sudo apt install -y build-essential git mesa-common-dev libglu1-mesa-dev ; fi - sh: echo QTDIR=$QTDIR - sh: echo QT_DIR=$QT_DIR - sh: echo Qt5_DIR=$Qt5_DIR - sh: echo PATH=$PATH # Install OpenCV - sh: | if [ "$USE_CMAKE" = true ]; then echo == INSTALL OPENCV =============================================================================== sudo apt install -y libopencv-dev fi # Install CImg - sh: | if [ "$USE_CMAKE" = true ]; then echo == INSTALL CIMG ================================================================================= mkdir $HOME/cimg git clone --depth=1 https://github.com/dtschump/CImg.git $HOME/cimg ls $HOME/* ls $HOME/cimg/* export CIMG_DIR=$HOME/cimg echo "CIMG_DIR=$CIMG_DIR" export CIMG_INCLUDE_DIR=$HOME/cimg echo "CIMG_INCLUDE_DIR=$CIMG_INCLUDE_DIR" fi build_script: - sh: echo == BUILD JKQtPlotter ============================================================================ - sh: cd $APPVEYOR_BUILD_FOLDER - sh: mkdir build - sh: mkdir install - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then cd build echo --- Run CMake Configure ----------------------------------------------------------------------------- cmake --version cmake -G "$CMAKE_GENERATOR" "-DCMAKE_PREFIX_PATH=$QTDIR;$CIMG_INCLUDE_DIR" "-DCMAKE_INSTALL_PREFIX=$APPVEYOR_BUILD_FOLDER/install" .. echo --- Build using CMake ------------------------------------------------------------------------------- cmake --build . --config "$CONFIGURATION" -j$(getconf _NPROCESSORS_ONLN) -- $CMAKE_BUILDFLAGS fi if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = true ]; then cd examples/cmake_fetchcontent_example mkdir build cd build echo --- Run CMake Configure with FetchCOntent ----------------------------------------------------------- cmake --version cmake -G "$CMAKE_GENERATOR" "-DCMAKE_PREFIX_PATH=$QTDIR;$CIMG_INCLUDE_DIR" "-DCMAKE_INSTALL_PREFIX=$APPVEYOR_BUILD_FOLDER/install" .. echo --- Build using CMake with FetchCOntent ------------------------------------------------------------- cmake --build . --config "$CONFIGURATION" -j$(getconf _NPROCESSORS_ONLN) -- $CMAKE_BUILDFLAGS fi - sh: | if [ "$USE_CMAKE" = false ]; then cd build echo --- Run QMake Configure ----------------------------------------------------------------------------- $QTDIR/bin/qmake -v $QTDIR/bin/qmake -makefile -o Makefile "CONFIG+=$CONFIGURATION" ../JKQtPlotterAppveyorBuild.pro echo --- Build for QMake --------------------------------------------------------------------------------- make -j$(getconf _NPROCESSORS_ONLN) fi - sh: - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then echo == INSTALL JKQtPlotter ========================================================================== cd $APPVEYOR_BUILD_FOLDER cd build echo --- Install using CMake ------------------------------------------------------------------------------- cmake --install . --config "$CONFIGURATION" fi after_build: - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then echo == TEST USE JKQtPlotter CMAKE BUILD ============================================================ cd $APPVEYOR_BUILD_FOLDER cd examples/cmake_link_example mkdir build cd build cmake -G "$CMAKE_GENERATOR" "-DCMAKE_PREFIX_PATH=$QTDIR;$CIMG_INCLUDE_DIR;$APPVEYOR_BUILD_FOLDER\install" .. cmake --build . --config "$CONFIGURATION" -j$(getconf _NPROCESSORS_ONLN) -- $CMAKE_BUILDFLAGS cd .. fi test_script: - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then echo == RUNNING UNIT TESTS FOR JKQtPlotter CMAKE BUILD =============================================== cd $APPVEYOR_BUILD_FOLDER cd build ctest --version ctest --print-labels --build-config "$CONFIGURATION" ctest --build-config "$CONFIGURATION" -VV --output-on-failure --output-junit test-results.xml fi after_test: - find "$APPVEYOR_BUILD_FOLDER" -type f -name 'test-results.xml' -print0 | xargs -0 -I '{}' curl -F 'file=@{}' "https://ci.appveyor.com/api/testresults/junit/$APPVEYOR_JOB_ID" # MacOS (Monterey) - matrix: only: - APPVEYOR_BUILD_WORKER_IMAGE: macos-monterey init: - sh: echo == INIT SYSTEM ENVIRONMENT ====================================================================== - sh: echo _NPROCESSORS_ONLN=$(getconf _NPROCESSORS_ONLN) - sh: echo APPVEYOR_BUILD_WORKER_IMAGE=$APPVEYOR_BUILD_WORKER_IMAGE - sh: echo QTABI=$QTABI - sh: echo CMAKE_GENERATOR=$CMAKE_GENERATOR install: # Init compiler environment - sh: echo == INIT COMPILER ENVIRONMENT ==================================================================== - sh: export QTDIR=$HOME/Qt/$QTVER/$QTABI/ - sh: export QT_DIR=$HOME/Qt/$QTVER/$QTABI/ - sh: export Qt5_DIR=$QTDIR/lib/cmake - sh: echo QTDIR=$QTDIR - sh: echo QT_DIR=$QT_DIR - sh: echo Qt5_DIR=$Qt5_DIR - sh: echo PATH=$PATH # Install OpenCV build_script: - sh: echo == BUILD JKQtPlotter ============================================================================ - sh: mkdir build - sh: cd build - sh: echo --- Run CMake Configure ----------------------------------------------------------------------------- - sh: cmake --version - sh: cmake -G "$CMAKE_GENERATOR" "-DCMAKE_PREFIX_PATH=$QTDIR" .. - sh: echo --- Build using CMake ------------------------------------------------------------------------------- - sh: cmake --build . --config "$CONFIGURATION" -j$(getconf _NPROCESSORS_ONLN) -- $CMAKE_BUILDFLAGS after_build: - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then echo == TEST USE JKQtPlotter CMAKE BUILD ============================================================ cd $APPVEYOR_BUILD_FOLDER cd examples/cmake_link_example mkdir build cd build cmake -G "$CMAKE_GENERATOR" "-DCMAKE_PREFIX_PATH=$QTDIR;$CIMG_INCLUDE_DIR;$APPVEYOR_BUILD_FOLDER\install" .. cmake --build . --config "$CONFIGURATION" -j$(getconf _NPROCESSORS_ONLN) -- $CMAKE_BUILDFLAGS cd .. fi test_script: - sh: | if [ "$USE_CMAKE" = true ] && [ "$TEST_FETCHCONTENT" = false ]; then echo == RUNNING UNIT TESTS FOR JKQtPlotter CMAKE BUILD =============================================== cd $APPVEYOR_BUILD_FOLDER cd build ctest --version ctest --print-labels --build-config "$CONFIGURATION" ctest --build-config "$CONFIGURATION" -VV --output-on-failure --output-junit test-results.xml fi after_test: - find "$APPVEYOR_BUILD_FOLDER" -type f -name 'test-results.xml' -print0 | xargs -0 -I '{}' curl -F 'file=@{}' "https://ci.appveyor.com/api/testresults/junit/$APPVEYOR_JOB_ID" artifacts: - path: 'install' name: install-results type: zip - path: 'build/**/test-results.xml' name: test_results