2016-12-09 1 views
0

Un du fichier d'en-tête par exemple BamReader.h du paquet bamtools est l'installation àAC_CHECK_HEADER échoue si l'en-tête chemin d'installation a api dans ce

/usr/local/include/bamtools/api 

J'ai essayé de régler le comprennent drapeau soit:

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])]) 

Si je vérifie le fichier config.log, le premier m'a donné une erreur:

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. 

Heiligenstadt d m'a donné l'erreur suivante:

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 

Le problème est avec BamReader.h essayant d'inclure api/api_global.h

Répondre

0

Je suis une solution simple en mettant l'api dans les AC_CHECK_HEADERS le cela a fonctionné. Pour l'essentiel, vous devez utiliser la bibliothèque en ajoutant api/à chaque en-tête. Veuillez commenter: est-ce une bonne pratique?

+1

Il est courant que les bibliothèques exigent d'inclure uniquement leur chemin de base plutôt que les sous-répertoires, afin d'éviter les conflits de noms avec les en-têtes standard ou les en-têtes provenant d'autres bibliothèques. –

+1

L'utilisation du mot «api» dans le nom du répertoire des en-têtes d'une bibliothèque est une mauvaise pratique. L'en-tête devrait idéalement s'appeler ''. –

+0

D'accord avec le commentaire de Roland. api est un terme générique, c'est inutile. –