Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Project Structure for Libraries | Building and Packaging Libraries
C++ Library Development

bookProject Structure for Libraries

When you begin developing a C++ library, how you organize your project's files has a big impact on maintainability, clarity, and ease of collaboration. A well-structured project makes it easier for users and contributors to understand where to find public headers, private implementation files, build scripts, and tests. The standard convention for C++ libraries is to separate source files (.cpp) and public header files (.h or .hpp). Typically, you will see a structure like this:

  • An include/ directory for all public headers you want users of your library to access;
  • A src/ directory for implementation files and any private headers;
  • A tests/ directory for unit tests and test data;
  • A CMakeLists.txt file (or similar build script) at the root, to define how the library is built.

This separation helps in several ways. Keeping public headers in include/ ensures that users only see the API you intend to expose, reducing accidental dependencies on internal details. Placing implementation files in src/ keeps your build clean and helps prevent users from including internal headers directly. Organizing tests separately makes it easier to automate testing and keep your main library codebase focused.

src/add.cpp

src/add.cpp

tests/test_add.cpp

tests/test_add.cpp

include/simplemath/add.h

include/simplemath/add.h

CMakeLists.txt

CMakeLists.txt

copy
12345678
#include "simplemath/add.h" namespace simplemath { int add(int a, int b) { return a + b; } }
Note
Note

As your library grows, you might split your src/ and include/ directories into subfolders for each module or component, or add directories for documentation, benchmarks, or integration tests. Consider using a docs/ directory for documentation and a benchmarks/ directory for performance tests. This modular approach keeps large projects manageable and helps new contributors navigate your codebase.

question mark

Why is it recommended to separate public headers into an include/ directory and implementation files into a src/ directory in a C++ library project?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookProject Structure for Libraries

Deslize para mostrar o menu

When you begin developing a C++ library, how you organize your project's files has a big impact on maintainability, clarity, and ease of collaboration. A well-structured project makes it easier for users and contributors to understand where to find public headers, private implementation files, build scripts, and tests. The standard convention for C++ libraries is to separate source files (.cpp) and public header files (.h or .hpp). Typically, you will see a structure like this:

  • An include/ directory for all public headers you want users of your library to access;
  • A src/ directory for implementation files and any private headers;
  • A tests/ directory for unit tests and test data;
  • A CMakeLists.txt file (or similar build script) at the root, to define how the library is built.

This separation helps in several ways. Keeping public headers in include/ ensures that users only see the API you intend to expose, reducing accidental dependencies on internal details. Placing implementation files in src/ keeps your build clean and helps prevent users from including internal headers directly. Organizing tests separately makes it easier to automate testing and keep your main library codebase focused.

src/add.cpp

src/add.cpp

tests/test_add.cpp

tests/test_add.cpp

include/simplemath/add.h

include/simplemath/add.h

CMakeLists.txt

CMakeLists.txt

copy
12345678
#include "simplemath/add.h" namespace simplemath { int add(int a, int b) { return a + b; } }
Note
Note

As your library grows, you might split your src/ and include/ directories into subfolders for each module or component, or add directories for documentation, benchmarks, or integration tests. Consider using a docs/ directory for documentation and a benchmarks/ directory for performance tests. This modular approach keeps large projects manageable and helps new contributors navigate your codebase.

question mark

Why is it recommended to separate public headers into an include/ directory and implementation files into a src/ directory in a C++ library project?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1
some-alt