В настоящее время я занимаюсь разработкой 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? Один из этих двух или, может быть, какой-то другой?
Спасибо
Я наконец выбрал следующую структуру:
.../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.
Других решений пока нет …