Skip to content

Add C++ support (GCC and Clang) on all platforms #104

Description

@kcgen

Tool information

  • Tool names: defacto C++ compilers: GCC and Clang

  • Add or update? Add

  • Desired versions: Latest version available in standard package repositories. Currently these are:

    Compiler Version OS Package Manager(s)
    GCC 9 all apt, Brew, MacPorts, and MSYS2
    Clang 8 Ubuntu-19.04 apt
    Clang 9 macOS and Windows Brew and Chocolatey
  • Approximate size: Clang depends on GCC (that's why it often makes sense to simply install both; in addition to their technical differences). Typically the combo is a couple GB on Windows and smaller on macOS and Linux.

  • Brief description of packages: These C++ compilers are used to build literally every C++ autotools/cmake project out there (tens of thousands of open-source applications and tools; perhaps more on GitHub).

    The main goal of this request is to allow the vast majority of open source C/C++ packages to be ./configure'd and built with either compiler (assuming the user pulls in any package-specific dependencies) "out of the box".

  • Homepages: GCC - https://gcc.gnu.org/, Clang - https://clang.llvm.org/

Virtual environments affected

  • ☑️ macOS 10.15
  • ☑️Ubuntu 16.04 LTS
  • ☑️ Ubuntu 18.04 LTS
  • ☑️ Windows Server 2016 R2
  • ☑️ Windows Server 2019

Can they be installed during the build?
Yes. I'm currently installing the following in my workflow:

Compilers OS Package Manager Time
GCC and Clang Ubuntu apt < 60s
GCC macOS Brew and MacPorts between 3 min and 5 min
GCC and Clang Windows MSYS2's pacman between 8 min and 12 min

Compiling my application takes less time than installing these.

Because of this excessive time and resource usage, I made use of GitHub's new cache feature available in CI workflows, however, the cache limit is (currently) too small to save most of these development stacks.

Because it seems absurd that GitHub's cache size cannot accommodate C++ "hello world", I flagged
it here to which GitHub staff member @chrispat suggested that I shouldn't be caching C++ dependencies and instead they should be available in the baseline VMs.

Are you willing to submit a PR?
Yes

Metadata

Metadata

Assignees

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions