Date: Tue, 14 Nov 2017 23:34:15 +0900 From: =?UTF-8?B?SGlyb28gT25vICjlsI/ph47lr5vnlJ8p?= <hiroo.ono+freebsd@gmail.com> To: freebsd-users-jp <freebsd-users-jp@freebsd.org> Subject: [FreeBSD-users-jp 96168] Re: =?utf-8?b?Y21ha2Ug44GoIGljb252Lmg=?= Message-ID: <CANtk6Sg0FvA_cBmygkhzaFWydC%2Be-EuPBX-XWGLSwFsuLTrw9A@mail.gmail.com> In-Reply-To: <CANtk6Sh%2BSZVqy7D18rQfqi4Kcnt%2BHD1zzhpji6sQE0B_LumnHQ@mail.gmail.com> References: <CANtk6ShNgs1O_amjFnHFpQ_e=G8fr0r9UFYOokWiyqebTNTsig@mail.gmail.com> <CANtk6Sh%2BSZVqy7D18rQfqi4Kcnt%2BHD1zzhpji6sQE0B_LumnHQ@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
小野寛生です。
cmake の問題ではありませんでした。
2017/11/13 Hiroo Ono (小野寛生) <hiroo.ono+freebsd@gmail.com>:
>> 小野寛生です。
>> 意図としては、/usr/include/iconv.h を include して libc にある iconv
>> を使いたいです。
>>
>> CMake を使うと /usr/local/include/iconv.h (GNU libiconv のやつ) を見つけて
>> そっちを読み込んでしまいます。
という問題ですが、
> それはともかく、 -I がどのような順序になるように生成されているのか、確認した方が良い気はします。
という指摘をいただいて確認したところ、
CMakeFiles/target.dir/flags.make:CXX_INCLUDES = -I /usr/local/include
-I/usr/home/hiroo/work/foo/src/target/../include
のようになっていて、CMakeLists.txt の target_include_directories で /usr/include を
指定してもしなくても変わりませんでした。
それ以前に、そもそも cc でも -I に /usr/include を指定しても無視されていました。
でもって、Cコンパイラの (少なくとも gcc や clang での) インクルードファイルの
検索順は、
1) -I で指定されたディレクトリ
2) -isystem で指定されたディレクトリ
3) システムディレクトリ (/usr/include はここ)
となっていて、/usr/local/include に libiconv の iconv.h がある場合に、
インクルードディレクトリに /usr/local/include を指定すると詰んでしまうようです。
FreeBSD の ports&package の場合ですが、libiconv には glib が依存していて、
これにいろんな ports が依存しているので、どれか一つでも入れるとひっかかります。
というわけで、glib なりそれに依存しているライブラリなりを使う場合は
> 3. GNU の軍門に下って libiconv を使う。
しかなさそうです。cmake は幸い libiconv ではなく icu を使っているので、
クリーンなやり方の順に
4') jail を使って libiconv をインストールしていない環境を用意してそこで
ビルドする。
5. #include "/usr/include/iconv.h" とやって使う。
> 4. (ビルド環境で) /usr/local/include/iconv.h を消す。
か ln -s /usr/include/iconv.h /usr/local/include/iconv.h とやる。
というあたりが結局解決方法なのかなと考えています。
& ޭyǫ:_盱+8n6Nn^z۫'zyv~nh ޖ+ޭSyǫ:fj)fj|yyǢ_Wyv_盱+m4_tmm:k_uo)Y+/~nhDL0yv陨yvN/M{ӽvۯML'hk^jx'ڊ~^qyk_v
j*-}(}wv]o)y_"13wQyv ^;mM4Dz{ޖ^~&槊[,x(}w&M捊[,{^jx'ڊ~~nn쎑kyREe:+zǫb{ z֥(@ڵz6^Nt6C0E^Ȩ]{^^镨r
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANtk6Sg0FvA_cBmygkhzaFWydC%2Be-EuPBX-XWGLSwFsuLTrw9A>
