Можно использовать следующую структуру папок (проект описан в другом посте):
D:\PROJECTS\SIMPLE-THINGS\TRUNK\CMAKE_TEST
│ CMakeLists.txt
│
├───cli
│ │ CMakeLists.txt
│ │
│ └───src
│ main.cpp
│
└───core
│ CMakeLists.txt
│
├───include
│ core.hpp
│
└───src
core.cpp
core.hpp
Примем соглашение, по которому клиент библиотеки вправе обращаться только к заголовочным файлам из папки include, а файлы в этой папке будут ссылаться на другие файлы из каталога библиотеки. Таким образом поставленная задача инкапсуляции будет решена.Но возникает другая проблема: include guard в одноименных файлах (core.hpp в примере) может совпадать, в этом случае целевой файл не будет заинклюжен. Для этого придется принять еще одно соглашение, по которому guard во внешних файлах будет называться, например, CLASS_NAME_HPP, а во внутренних _CLASS_NAME_HPP_.
Комментариев нет:
Отправить комментарий