[FreeBSD-users-jp 96168] Re: cmake と iconv.h

2017-11-14 スレッド表示 小野寛生
小野寛生です。

cmake の問題ではありませんでした。

2017/11/13 Hiroo Ono (小野寛生) :
>> 小野寛生です。

>> 意図としては、/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 の場合ですが、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 とやる。

というあたりが結局解決方法なのかなと考えています。
___
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"


[FreeBSD-users-jp 96167] Re: zipアーカイブ中の日本語ファイル

2017-11-14 スレッド表示 しらい たかし

 しらいです。

On 17/11/13 21:53, Tomoaki AOKI wrote:

青木@名古屋です。



FDcloneといえば、UTF-8の日本語ファイル名のファイルが多数ある
ディレクトリの表示が異常に遅かったりするのは何か設定で対策
できるのでしょうか? lsやmisc/mcでは発生しないのでFDcloneの
内部処理で何かあると踏んでいるのですが。


 内部コードの EUC-JP との間で変換が大量に発生して遅くなって
いるんだと思います。付け焼刃ですが UNICODEBUFFER=1 に設定す
ると多少はましになるかと。
 UTF-8 を内部コードにという要望はかねてからあるのですが、グ
リフ幅の判定が難しいので及び腰です。テーブルを用意して端末毎
に動的に切替える必要があるので結構大変です。



 2 はリソースが Sjift_JIS 以外のコードだと誤解して変換して
しまった結果だと思うので、nkf に -s オプションに加えて適切な
--ic オプションを設定してやることで復元出来るかも知れません。


こちらは別途丸山さんのメールへの返信で書いたように、化け方が
1と同じなら文字コード指定がないからiconvの機能を使っていない
だけ、違う化け方ならしらいさんのおっしゃるとおりかと。


 どちらも nkf でも直らないということなので、UTF-8 以外のコ
ードで出力さえたという単純なことではないと思います。1 は MSB
欠落のようですが 2 は何だったんでしょうね?
 気になります。

   しらい たかし
___
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"