From Fedora Project Wiki

Revision as of 20:20, 12 June 2015 by Codonell (talk | contribs) (Created page with "There are two basic categories of C and C++ packages: applications and libraries. The following are general packaging guidelines for C and C++ applications and libraries. Some...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

There are two basic categories of C and C++ packages: applications and libraries. The following are general packaging guidelines for C and C++ applications and libraries. Some of these guidelines will also apply to packages that use cpp to process C or C++ headers.

BuildRequires for C and C++ applications

If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. Those packages will include everything that is required to build a standards conforming C or C++ application.

If your library includes standard C or C++ headers, you must list Requires against gcc, gcc-c++, or clang to install the needed standards conforming headers.

If at runtime you use cpp to process C or C++ langauge headers then you have no choice but to use Requires for gcc, gcc-c++, or clang to install the required headers for a standard conforming C or C++ application. In the future this might change if a set of standard C or C++ language headers are provided by a special-purpose provides e.g. c-headers or c++-headers.

You need not include a BuildRequires or Requires on glibc-headers, or any other core C or C++ implementation package unless you have a specific and special need e.g. static compilation requires the *-static library packages. The default use case of a dynamically compiled C or C++ application is taken care of by the gcc, gcc-c++, and clang packages.