「PKG_CONFIG_PATH」が正しく設定されていてもヘッダーが見つかりません。

「PKG_CONFIG_PATH」が正しく設定されていてもヘッダーが見つかりません。

ライブラリをインストールしました~/.local。環境変数の設定は次のとおりです。

$ echo $LD_LIBRARY_PATH
/home/saga//.local/lib
$ echo $PKG_CONFIG_PATH
/home/saga//.local/lib/pkgconfig

/home/saga//.local/lib/pkgconfig次の内容のre2.pcファイルがあります。

prefix=/home/saga//.local
exec_prefix=/home/saga//.local
includedir=/home/saga//.local/include
libdir=/home/saga//.local/lib

Name: re2
Description: RE2 is a fast, safe, thread-friendly regular expression engine.
Version: 0.0.0
Cflags: -std=c++11 -pthread -I${includedir}
Libs: -pthread -L${libdir} -lre2

.re2.hを含むre2プログラムをコンパイルしようとすると、次のエラーが発生します。/home/saga//.local/includere2.h

$ g++ tst.cpp
tst.cpp:1:9: fatal error: re2/re2.h: No such file or directory
 #include<re2/re2.h>
         ^~~~~~~~~~~
compilation terminated.

そして

$ g++ tst2.cpp
tst.cpp:1:9: fatal error: re2.h: No such file or directory
 #include<re2.h>
         ^~~~~~~
compilation terminated.

の出力はpkg-config --libs re2次のとおりです。-L/home/saga//.local/lib -pthread -lre2

この問題をどのように解決できますか?

答え1

あなたはそうではありません使用 pkg-config...

$ g++ $(pkg-config --cflags re2) tst.cpp

答え2

デバッグモードでpkg-configを実行してみることができます。

$ pkg-config --cflags-only-I re2 --debug

次のように印刷する必要があります。

< cut >
Looking for package 're2'
Looking for package 're2-uninstalled'
Reading 're2' from file '/home/saga/.local/lib/pkgconfig/re2.pc'
Parsing package file '/home/saga/.local/lib/pkgconfig/re2.pc'
  line>prefix=/home/saga//.local
 Variable declaration, 'prefix' has value '/home/saga//local'
  line>exec_prefix=/home/saga//.local
 Variable declaration, 'exec_prefix' has value '/home/saga//local'
  line>includedir=/home/saga//.local/include
 Variable declaration, 'includedir' has value '/home/saga//.local/include'
  line>libdir=/home/saga//.local/lib
 Variable declaration, 'libdir' has value '/home/saga//.local/lib'
  line>
  line>Name: re2
  line>Description: RE2 is a fast, safe, thread-friendly regular expression engine.
  line>Version: 0.0.0
  line>Cflags: -std=c++11 -pthread -I${includedir}
  line>Libs: -pthread -L${libdir} -lre2
Path position of 're2' is 1
Adding 're2' to list of known packages
  pre-remove: re2
 post-remove: re2
 original: re2
   sorted: re2
adding CFLAGS_I string "-I/home/saga//.local/include "
returning flags string "-I/home/saga//.local/include "
-I/home/saga//.local/include

最後の行が現在欠落しているものであることがわかります。

関連情報