Как структурировать частный и публичный API в C ++ (заголовочные файлы)

В настоящее время я занимаюсь разработкой API, и теперь я считаю полезным иметь явное разделение в моем дереве каталогов, чтобы разделить открытые заголовочные файлы и частные заголовочные и исходные файлы. Таким образом, будет проще создать как публичный, так и пакет разработки (приватный) для моего SDK. Я имею в виду два разных варианта:

1)
.../LibName/Class.h
.../LibName/private/ClassImpl.h
.../LibName/private/LibName/ClassImpl.cpp

2)
.../public/LibName/Class.h
.../private/LibName/ClassImpl.h
.../private/LibName/ClassImpl.cpp

Было бы хорошо, если бы файлы были организованы способом ‘Libname / FileName’, по крайней мере, для публичных файлов, потому что в моем коде есть директивы include:

#include "LibName/FileName.h"

Как вы думаете, что является лучшим вариантом для организации заголовков для API? Один из этих двух или, может быть, какой-то другой?

Спасибо

2

Решение

Я наконец выбрал следующую структуру:

.../include/LibName1/Class.h
.../include/LibName2/OtherClas.h

.../src/LibName1/ClassImpl.h
.../src/LibName1/ClassImpl.cpp
.../src/LibName2/OtherClassImpl.h
.../src/LibName2/OtherClassImpl.h

Таким образом, я могу как разделять публичные заголовки (включая каталог), так и частный источник (каталог src), а также ссылаться на файлы заголовков в директивах include без явной записи, если они являются публичными или частными:

#include "LibName1/Class.h"

Эта структура (или аналогичная) также используется в других библиотеках, таких как Qt framework.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector