2013-06-10 5 views
6

Windows 32ビット(MSVC++を使用)でC++でソフトウェアを開発していますが、すべてのプラットフォームでソフトウェアを使用できるようにしたいので、私のビルドジェネレータとしてCMake。CMakeを使用してWindowsをターゲットとするクロスプラットフォームプラットフォーム

私はまだCMakeの初心者です。 CMakeチュートリアルから、私は、コードをクロスコンパイルするためには、最初にターゲットプラットフォームをシミュレートするツールチェーンをホストプラットフォームにインストールする必要があることを理解しています。次に、このツールチェーンが提供する適切なターゲットプラットフォームのCおよびC++コンパイラを使用して、CMakeはメイクファイルなどを生成することができます。

これで、Win32プラットフォーム上でLinuxプラットフォーム(GNU/Linux)用のコードを構築します。 Cygwinと組み合わされたCMakeとコンパイラとしてgccとg ++を使って上記の手順を実行しようとしました。それはきれいに作成されたmakefileを作成し、Cygwin端末で "make"を発行すると、生成されたmakefileは "作られました"。今、私はLinuxプラットフォーム上で動作することを望んでいた実行可能ファイルを持っています。しかしLinuxでは、私はエラーが発生します:bashはバイナリファイルを実行できません。

コマンドファイルexecutablenameを使用して、上記の手順で実行される実行可能ファイルが、Windows用のPE32型であることを認識しました。

私はcmakeを使用してクロスプラットフォームのビルド手順を理解していますか?また、Linux ELF実行ファイルを取得するために、Windowsの下で別のLinuxツールチェーンを使用するだけですか?私が欲しいものを私に与えるツールチェーンがあなたの心に浮かんでいますか?

感謝

Setareh

+0

私はcmakeについてはわかりませんが、qmakeはさまざまなプラットフォーム用に「ビルドプロファイル」を持っています。多分、あなたはcmakeのドキュメントなどの "target platform"オプションを探してみるべきでしょう。 –

+1

http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html – stijn

+0

[マシン上のqmakeのmkspecのリストの例](http://pastebin.com/raw.php ?@ = 3mMjgC9p) –

答えて

4

クロスコンパイルを行う場合は、ここをクリックしてください。http://www.cmake.org/Wiki/CMake_Cross_Compilingしかし、私はあなたのWindowsマシンに仮想ボックスのようなLinux VMをインストールし、Linux上で純粋に構築することをお勧めします。はるかに速くコンパイルされ、クロスコンパイルについて心配する必要はありません。同じソースツリーを共有できるように、Linux VMからWindowsディスクをマウントすることができます。 Linux VMはWindows下でgccを実行するよりもはるかに高速にコンパイルされます。

+0

お返事ありがとうございました。今私は自分の選択肢を理解している。 – Setareh

0

にCMakeのご理解が正しいか...それはルールに基づいて、あなたが要求し(あるいはあなたが現在オンになっているプラ​​ットフォームのデフォルトです)、ビルドシステムを作成する方法を決定しますCMakeLists.txtファイルにあります。しかし、これは、Linuxをターゲットにできるものがインストールされていないと、Windowsマシン上でlinux用にコンパイルするのに役立つとは限りません。

ターゲットLinuxをコンパイルするには、linuxコンパイラを使用する必要があります。 link posted by @stjinはcygwinにインストールする方法を教えてくれます。次に、あなたのCMakeのビルドを設定するには、ターミナルで次の操作を行います。

CC=gcc-linux CXX=g++-linux cmake . [options] 

は、これは特別なLinuxのターゲットとコンパイラを見つけるためにCMakeのを教えてくれます。 Hopefuly、これらのコンパイラでコンパイルした後で、あなたはlinuxで動くことができます。

+0

@StjinとSethMMorton、あなたのコメントとリンクをありがとう。しかし、metamodのウェブサイトは明らかにバイナリ配布を変更しました。私はそこからmetamod.dllファイルしか入手できません。CygwinにどのようにLinuxクロスコンパイラをインストールすればよいのか分かりません。何か案は? – Setareh

関連する問題