third party toolをビルドしようとしています。私はC++のビルドツールにあまり慣れていないので、これをどのように解決すべきか分かりません。g ++はそれが存在する最初のインクルードパスからヘッダファイルを受け取りませんか?
dcp2icc.src/dcp2icc.cpp
6行目です:
#include "dng_camera_profile.h"
dng_sdk_1_2/dng_sdk/source/dng_camera_profile.h
行39:
$ ls -l dng_sdk_1_2/dng_sdk/source/dng_hue_sat_map.h fixes/dng_sdk/dng_hue_sat_map.h
-r--r--r-- 1 user users 3141 Apr 9 2008 dng_sdk_1_2/dng_sdk/source/dng_hue_sat_map.h
-rw-r--r-- 1 user users 3124 Oct 31 2015 fixes/dng_sdk/dng_hue_sat_map.h
最後に、これはコマンドです:
#include "dng_hue_sat_map.h"
dng_hue_sat_map.h
のファイルがあります。実行します:
g++ -o build/dcp2icc/dcp2icc.o -c -m32 -O2 -iquote- -DUNIX_ENV=1 -D_FILE_OFFSET_BITS=64 -DkBigEndianHost=0 -Idcp2icc.src -Ifixes/dng_sdk -Idng_sdk_1_2/dng_sdk/source -INone dcp2icc.src/dcp2icc.cpp
私は-Ifixes/dng_sdk
が-Idng_sdk_1_2/dng_sdk/source
前に来るので、fixes/dng_sdk/dng_hue_sat_map.h
が使用されることを期待するが、これはそうではありません。
In file included from dng_sdk_1_2/dng_sdk/source/dng_camera_profile.h:39:0,
from dcp2icc.src/dcp2icc.cpp:6:
dng_sdk_1_2/dng_sdk/source/dng_hue_sat_map.h:129:8: error: extra qualification 'dng_hue_sat_map::' on member 'operator==' [-fpermissive]
bool dng_hue_sat_map::operator== (const dng_hue_sat_map &rhs) const;
^~~~~~~~~~~~~~~
時にヘッダファイルG ++を使用するファイルを選択しない方法2つのインクルード場所に存在しますか? include
がどのシーケンスに入っているかは重要ですか?
-I dirの
ヘッダファイルを検索するディレクトリのリストにディレクトリdirを追加します。
man g++
は、単純に言って、これを持っています。 -Iで指定されたディレクトリは、標準システムがディレクトリをインクルードする前に検索されます。ディレクトリdirが標準のシステムインクルードディレクトリの場合、このオプションは無視され、システムディレクトリのデフォルトの検索順序とシステムヘッダの特殊な処理が確実に無効にならないようにします。 dirが "="で始まる場合、 "="はsysroot接頭辞に置き換えられます。 --sysrootと-isysrootを参照してください。
GCC specは、私の知る限り、私が見ているものの反対である、次の言葉:
あなたは、コマンドラインで複数の-Iオプションを指定することができ、その場合には、ディレクトリは左から右の順に検索されます。
これはGCCの仕様であり、何が起こったのか私の経験です。他にも問題があります。 –