diff --git a/.github/workflows/CI-unixish-docker.yml b/.github/workflows/CI-unixish-docker.yml index c5e51d5b4c0..118cb817f63 100644 --- a/.github/workflows/CI-unixish-docker.yml +++ b/.github/workflows/CI-unixish-docker.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: - image: ["centos:7", "ubuntu:14.04", "ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"] + image: ["ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"] include: - build_gui: false - image: "ubuntu:23.10" @@ -39,13 +39,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Install missing software on CentOS 7 - if: matrix.image == 'centos:7' - run: | - yum install -y cmake gcc-c++ make pcre-devel - yum --enablerepo=extras install -y epel-release - yum install -y ccache - - name: Install missing software on ubuntu if: contains(matrix.image, 'ubuntu') run: | @@ -62,22 +55,12 @@ jobs: # - it doesn't support centos - name: ccache uses: hendrikmuhs/ccache-action@v1.2 - if: matrix.image != 'ubuntu:14.04' # no support for --set-config with: key: ${{ github.workflow }}-${{ matrix.image }} - # tests require CMake 3.9 - no ccache available - - name: CMake build (no tests / no ccache) - if: matrix.image == 'ubuntu:14.04' - run: | - mkdir cmake.output - cd cmake.output - cmake -G "Unix Makefiles" -DHAVE_RULES=On .. - cmake --build . -- -j$(nproc) - # tests require CMake 3.9 - ccache available - name: CMake build (no tests) - if: matrix.image == 'centos:7' || matrix.image == 'ubuntu:16.04' + if: matrix.image == 'ubuntu:16.04' run: | mkdir cmake.output cd cmake.output @@ -85,7 +68,7 @@ jobs: cmake --build . -- -j$(nproc) - name: CMake build - if: ${{ !matrix.build_gui && matrix.image != 'centos:7' && matrix.image != 'ubuntu:14.04' && matrix.image != 'ubuntu:16.04' }} + if: ${{ !matrix.build_gui && matrix.image != 'ubuntu:16.04' }} run: | mkdir cmake.output cd cmake.output @@ -99,7 +82,7 @@ jobs: cmake --build cmake.output -- -j$(nproc) - name: Run CMake test - if: matrix.image != 'centos:7' && matrix.image != 'ubuntu:14.04' && matrix.image != 'ubuntu:16.04' + if: matrix.image != 'ubuntu:16.04' run: | cmake --build cmake.output --target check -- -j$(nproc) @@ -107,7 +90,7 @@ jobs: strategy: matrix: - image: ["centos:7", "ubuntu:14.04", "ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"] + image: ["ubuntu:16.04", "ubuntu:18.04", "ubuntu:23.10"] fail-fast: false # Prefer quick result runs-on: ubuntu-22.04 @@ -118,13 +101,6 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Install missing software on CentOS 7 - if: matrix.image == 'centos:7' - run: | - yum install -y gcc-c++ make which python3 pcre-devel - yum --enablerepo=extras install -y epel-release - yum install -y ccache - - name: Install missing software on ubuntu if: contains(matrix.image, 'ubuntu') run: | @@ -136,7 +112,6 @@ jobs: # - it doesn't support centos - name: ccache uses: hendrikmuhs/ccache-action@v1.2 - if: matrix.image != 'ubuntu:14.04' # no support for --set-config with: key: ${{ github.workflow }}-${{ matrix.image }} diff --git a/cmake/compilerCheck.cmake b/cmake/compilerCheck.cmake index 1167a5cbcf8..bc8d24c8ac8 100644 --- a/cmake/compilerCheck.cmake +++ b/cmake/compilerCheck.cmake @@ -1,14 +1,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) - message(ERROR "GCC >= 4.8 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1) + message(ERROR "GCC >= 5.1 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported") endif () elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - # TODO: verify this - if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.9) - message(ERROR "Clang >= 2.9 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5) + message(ERROR "Clang >= 3.5 required - detected ${CMAKE_CXX_COMPILER_VERSION} not supported") endif () elseif(MSVC) - if (MSVC_VERSION VERSION_LESS 1800) - message(ERROR "Visual Studio >= 2013 (1800) required - detected ${MSVC_VERSION} not supported") + if (MSVC_VERSION VERSION_LESS 1900) + message(ERROR "Visual Studio >= 2015 (19.0) required - detected ${MSVC_VERSION} not supported") endif () endif() diff --git a/readme.md b/readme.md index 5094fa050cd..efcf52fdc62 100644 --- a/readme.md +++ b/readme.md @@ -27,22 +27,22 @@ You can stop the script whenever you like with Ctrl C. ## Compiling -Any C++11 compiler should work. For compilers with partial C++11 support it may work. If your compiler has the C++11 features that are available in Visual Studio 2013 / GCC 4.8 then it will work. +Cppcheck requires a C++ compiler with (partial) C++11 support. Minimum required versions are GCC 5.1 / Clang 3.5 / Visual Studio 2015. -To build the GUI, you need Qt. +To build the GUI application, you need to use the CMake or qmake (deprecated) build system. When building the command line tool, [PCRE](http://www.pcre.org/) is optional. It is used if you build with rules. There are multiple compilation choices: -* qmake - cross platform build tool -* cmake - cross platform build tool -* Windows: Visual Studio (VS 2013 and above) -* Windows: Qt Creator + mingw -* gnu make -* g++ 4.8 (or later) -* clang++ - -### cmake +* qmake - cross platform build tool (deprecated) +* CMake - cross platform build tool +* Windows: Visual Studio +* Windows: Qt Creator + MinGW +* GNU make +* GCC (g++) +* Clang (clang++) + +### CMake Example, compiling Cppcheck with cmake: diff --git a/releasenotes.txt b/releasenotes.txt index 887223c857b..0281a36acda 100644 --- a/releasenotes.txt +++ b/releasenotes.txt @@ -17,3 +17,4 @@ Deprecations: Other: - Added CMake option 'EXTERNALS_AS_SYSTEM' to treat external includes as 'SYSTEM' ones. +- The minimum required compiler versions have been bumped to GCC 5.1 / Clang 3.5 / Visual Studio 2015