stz2012/libarib25

ライブラリのインストール先について

Closed this issue · 2 comments

現状のライブラリのインストール先はlibになっていますが, ディストリビューションによっては正しいlib32やlib64にインストールされないようなものが出てきました.
https://wiki.gentoo.org/wiki/Project:AMD64/Multilib_layout
そこでシンボリックリンクを介さずに適切なパスを指定するため, cmakeのGNUInstallDirsを使用したいのですが, cmakeのバージョンアップは可能でしょうか?

@otakuto
現在 2.8 になっている、最小バージョンの指定を上げるということでしょうか?
このバージョン指定は特に考えて設定したわけではなく一般的に使われている最小値を採用しただけなので、
多少バージョンを上げても問題はないかと思います。ただ、現在サポートされている各ディストリの cmake のバージョンより上げてしまうと困る人がいるのかなと思います。また、Travis CI は cmake が確か、2.8 系だったと思うので CI 関連の設定の変更も必要かもしれませんね。

また、この問題に詳しいわけではないのですが cmake の install に渡す DESTINATION パラメータを変えるだけで良い気がするので、Gentoo 固有の問題であればインストール用のラッパを cmake/ ディレクトリ配下に作成してそちらを呼び出すように記述した方が移植性を損なうこともなく、問題解決も楽かなと思いますがいかがでしょうか?

@otakuto

GNUInstallDirs マクロ自体は、結構昔からあるんですね cmake 2.8.5 から導入されたようです。
CMakeList の内容をよくよく見たら、インストール先ディレクトリがハードコーディングされてたんですね。
これだと、確かに Gentoo だけでなく他のディストリでも問題が発生するかもしれませんね。

ためしに、最小バージョンの指定を 2.8.5 にして GNUInstallDirs マクロを使用するように変更したものを、
Gentoo の Docker コンテナで試しにビルドしてみたところちゃんと lib64 を自動判別してインストールできました。
Travis CI や、AppVeyor でも cmake のバージョンは 2.8.5 以上みたいですし、
去年の4月にサポートの切れた Ubuntu の 12.04 LTS でも cmake は 2.8.5 以上のようだったので問題はないと思います。
GNUInstallDirs とは関係ないですが cmake の最小バージョンを上げたことで AppVeyor の CYGWIN 環境でビルドがコケる問題が発生するようなので原因調査をして近い内にプルリク出そうと思います。

便利なマクロの存在を教えてくれてありがとうございます!