2016-12-09 7 views
0

Один из заголовка файла для примера BamReader.h из пакета bamtools будет установить наAC_CHECK_HEADER потерпеть неудачу, если заголовок пути установки имеет апите в нем

/usr/local/include/bamtools/api 

Я попытался установить флаг включает либо:

CXXFLAGS="$CXXFLAGS -I/usr/local/include/bamtools" 
or 
CXXFLAGS="$CXXFLAGS -I/usr/local/include/bamtools/api" 
AC_CHECK_HEADERS([BamReader.h], [bamtools_found=yes], [AC_MSG_ERROR([Unable to find bambools header])]) 

Если я проверяю config.log файл, первый дал мне ошибку:

configure:3837: g++ -c -g -O2 -I/usr/local/include/bamtools conftest.cpp >&5 
conftest.cpp:54:23: fatal error: BamReader.h: No such file or directory 
compilation terminated. 

Secon d дал мне следующую ошибку:

configure:3837: g++ -c -g -O2 -I/usr/local/include/bamtools/api conftest.cpp >&5 
In file included from conftest.cpp:54:0: 
/usr/local/include/bamtools/api/BamReader.h:13:28: fatal error: api/api_global.h: No such file or directory 
#include "api/api_global.h"^M 
          ^
compilation terminated. 
configure:3837: $? = 1 

Проблема с BamReader.h пытается включить API/api_global.h

ответ

0

Я получил простое исправление, поставив апи в AC_CHECK_HEADERS тем он работал.

CXXFLAGS="$CXXFLAGS -I/usr/local/include/bamtools" 
AC_CHECK_HEADERS([api/BamReader.h], [bamtools_found=yes], [AC_MSG_ERROR([Unable to find bambools header])]) 

configure output 
checking api/BamReader.h usability... yes 

По существу, вы должны использовать библиотеку, добавляя api/к каждому заголовку. Прокомментируйте: это хорошая практика?

+1

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

+1

Использование слова «api» в названии каталога заголовков библиотеки является плохой практикой. Заголовок в идеале должен быть назван ''. –

+0

Согласен с комментарием Роланда. api - такой общий термин, он бесполезен. –