(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...") |
No edit summary |
||
Line 1: | Line 1: | ||
This page contains best practices for C and C++ applications in Fedora, from development, debugging, and maintenance to packaging. | |||
== | == Packaging C and C++ applications == | ||
There are two basic categories of C and C++ packages: applications and libraries. Some of these guidelines will also apply to packages that use cpp to process C or C++ headers. | |||
=== BuildRequires and Requires === | |||
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 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. |
Revision as of 20:23, 12 June 2015
This page contains best practices for C and C++ applications in Fedora, from development, debugging, and maintenance to packaging.
Packaging C and C++ applications
There are two basic categories of C and C++ packages: applications and libraries. Some of these guidelines will also apply to packages that use cpp to process C or C++ headers.
BuildRequires and Requires
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.