Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 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?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  1
some-alt