Скажем, я работаю над библиотекой, Фу. В исходные файлы моей библиотеки я хотел бы включить заголовки так же, как пользователь моей библиотеки:
#include <foo/bar.hpp>
// code defining bar methods here
Например, при форсировании включаются другие заголовки внутри форсирования, например, <boost/shared_ptr.hpp>
, а не относительный цитируемый "../shared_ptr.hpp"
стиль. Я посмотрел на то, как некоторые другие библиотеки достигают этого, и кажется, что они добавляют избыточный каталог к своей структуре файлов, например, для этого. код повышения живет в «boost_1_4_1 / boost», а не просто «boost_1_4_1 /».
Переход на эту схему раздражает, если у вас уже есть управление исходным кодом с использованием существующего макета. Как лучше всего использовать GNU make для создания слоя? Моя единственная мысль — добавить цель, от которой зависят все цели сборки, которая создает скрытую папку с символической ссылкой внутри моего исходного дерева, и добавить эту скрытую папку в путь включения. Возможно, есть менее запутанный способ?
Не могли бы вы использовать ключ -I gcc опции INC для вашего Makefile?
НКА:
gcc -c -I / home / joseph / dev / foo / headers
Makefile:
INC=-I/home/joseph/dev/foo/headers
В этом случае у вас будет только одно место, чтобы сделать это изменение, Makefile.
Других решений пока нет …