2

ビルド システムを一般化して、いくつかの (やや類似した) プラットフォームでコンパイルしたいと考えています。シェル スクリプトまたは Makefile が実行されているホストのタイプを判断するための適切な方法は何ですか。Mac と Linuxだけでなく、Linux の特定のディストリビューション (RHEL、Ubuntu など)も区別したいと思います。Cygwin は私にとっては重要ではありませんが、返信に含めていただければ、他の人もきっと価値があると思うでしょう。

ソースからコンパイルするよりも、ホスト タイプを使用して正しいバージョンのバイナリ パッケージをフェッチしてインストールする方が便利な場合は、ホスト タイプを使用することも考えられます。さらに、一部の商用ソフトウェアは特定のディストリビューション用にバイナリ パッケージ化されているため、目的の一部は適切なバイナリを入手することです。

ありがとう、

SetJmp

4

5 に答える 5

5

救助へのAutotools。この種のことを行うのに役立つマクロがたくさんあります。

http://www.lrde.epita.fr/~adl/autotools.html

于 2011-02-08T18:59:45.627 に答える
2

uname -a 主要な *nix バリアントを区別する

Red Hat と ubuntu を区別する最善の方法が何であるかはよくわかりません。パッケージ管理ツールを探して、インストールされているパッケージを照会し、最終的にさまざまな debian 派生物を絞り込むのに役立ちます。

于 2011-02-08T18:10:29.703 に答える
2

Linux の亜種は通常、ディストリビューション情報を /etc/issue に保存します。

ほとんどのカーネルは情報を /proc/version に置きます

于 2011-02-08T18:22:51.353 に答える
1

それは完全に単純ではありません。を使用unameして一般的なパラメーターを見つけることができますが、分布を区別するのは難しい作業です。ビルドシステムを一般化するためにautoconfのようなものを使用することを検討する必要があるでしょうか?

于 2011-02-08T19:03:45.700 に答える
0

Qt を使用している場合に備えて、コンパイルしているオペレーティング システムをガイドする、非常に優れた一連の定義 Q_OS_* があります。

Q_OS_AIX
Q_OS_BSD4
Q_OS_BSDI
Q_OS_CYGWIN
Q_OS_DARWIN
Q_OS_DGUX
Q_OS_DYNIX
Q_OS_FREEBSD
Q_OS_HPUX
Q_OS_HURD
Q_OS_IRIX
Q_OS_LINUX
Q_OS_LYNX
Q_OS_MAC
Q_OS_MSDOS
Q_OS_NETBSD
Q_OS_OS2
Q_OS_OPENBSD
Q_OS_OS2EMX
Q_OS_OSF
...

それらはQtGlobalで定義されています。Q_CC_* またはターゲット ウィンドウ システム Q_WS_* を使用するコンパイラを把握するのに役立つ定義もあります。

しかし、Qt を使用しておらず、ジェネリック メソッドを使用したい場合は、ほとんどの場合、AutotoolsパッケージまたはCMakeにフォールバックする必要があります。

Linux ディストリビューションを決定するのはかなり難しいですが、難しいことではありません。最初に関心のあるディストリビューションを把握してから、選択したディストリビューションに対して、この例のようにあらゆる種類のディストリビューション固有のファイル/構成チェックを行う必要があります。利用可能な無数の Linux ディストリビューションのすべてを実際にサポートすることはできないためです。アウト。:-)

Mac 側については、Mac の専門家に答えてもらいますが、少なくとも多様性の問題は問題外であるため、それほど難しいことではありません。

于 2011-02-08T20:17:02.597 に答える