Skip site navigation (1)Skip section navigation (2)
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>