У меня есть следующее direcory stucture:включение файлов заголовков - относительно текущего каталога или включения каталогов?
src
+-- lib1
+-- lib1.h
+-- lib2
+-- lib2.h
Оба lib1
и lib2
собираются быть распределены (установлено). lib2
использует lib1
, поэтому она нуждается в некоторых включает в себя:
#include "../lib1/lib1.h" // 1
#include "lib1/lib1.h" // 2
#include <lib1/lib1.h> // 3
(1) является прямым путем, но очень unflexible. (2) - это способ, которым я пользуюсь в настоящий момент, но система сборки должна знать, что src
необходимо добавить в путь включения. (3) кажется лучшим для меня при распределении , потому что тогда можно предположить, что заголовки находятся в стандартном местоположении, но для меня не слишком очевидно, как система сборки обрабатывает это (в этом случае lib1
необходимо должен быть установлен до lib2
может быть скомпилирован).
Каков рекомендуемый способ?
Что вы подразумеваете под «установкой» lib? Является ли это статической или динамической библиотекой? Если он статичен, просто создайте красивую структуру депо и добавьте эти папки в свой путь include. –
Это все специфическое исполнение. В некоторых системах даже нет каталогов! –
@EdS., Я имею в виду: файлы заголовков и библиотеки копируются где-то (стандартное расположение, '/ usr/local/{lib, include}'), так что их можно использовать в других проектах. –