Добавить один заголовок из другого проекта в мой проект с помощью automake - PullRequest
0 голосов
/ 05 марта 2010

Я работаю над относительно большим проектом, использующим систему сборки automake.

Теперь проблема в том, что мне нужно связать проект с библиотекой из другого проекта (это работает нормально), но мне также нужно включить заголовок из дерева исходного кода другого проекта (api.h).

INCLUDES = -I@REMOTE_PROJECT_DIR@

в Makefile.am не работает, потому что в каталоге удаленного источника есть файлы .h с именами сортировки. Как я могу добавить только api.h?

Я использовал символическую ссылку на каталог include в проекте, но теперь мне нужно отправить исходники в общедоступное хранилище, и у всех, кто с ним работает, другой проект находится в другом каталоге, поэтому мне нужно использовать параметр configure.

Ответы [ 2 ]

1 голос
/ 09 марта 2010

Вы не хотите каким-либо образом настраивать свой Makefile.am или свой configure.ac. Если api.h установлен в стандартном месте (например, / usr / include), то все, что вам нужно, это AC_CHECK_HEADERS ([api.h]) в configure.ac. Если api.h установлен в нестандартном месте (например, / home / joe / include), способ подобрать его в вашем проекте определяется во время настройки. Когда вы запускаете configure, вы добавляете аргумент CPPFLAGS = -I / home / joe / include к вызову configure. Вы не указываете нестандартное расположение в самих файлах сборки.

Другой альтернативой является использование pkg-config, но нестандартное расположение вашего заголовочного файла все равно будет рассматриваться при запуске configure. (На этот раз, установив PKG_CONFIG_PATH вместо CPPFLAGS)

0 голосов
/ 05 марта 2010

Если у вас есть заголовки с одинаковыми именами, вы можете поместить хотя бы один из них в каталог с другим именем и включить его, используя имя каталога.

Вот пример структуры каталогов:

mylibrary/include/myblirary/api.h

myproject/api.h 
myproject/main.cpp 

В main.cpp:

#include "api.h"
#include "mylibrary/api.h"

#include <boost/regex.hpp>

При компиляции:

g ++ -I mylibrary / include

...