2009-04-29 8 views
40

Visual Studioで書かれたC++アプリケーションを(Linux用に)ビルドする最も簡単で簡単な方法は何ですか?コード自体は準備ができています。クロスプラットフォームのライブラリのみを使用しました。Linux用のVisual C++プロジェクトをビルドする方法は?

Visual StudioでWindowsのすべてを準備し、LinuxのCLIツールを使用してビルドすることはできますか?これを記述するドキュメントはありますか?

EDIT:いくつかのより多くの情報:

  • Libsの使用:STL、wxWidgetsの、ブースト、ASIO、cryptlib。

  • Linuxのノウハウはごくわずかです。

EDIT#2:とか、KDevelopで新しいプロジェクトを作成し、そこにすべてをコンパイルしますは、私は以下のソリューションを選択しました。

答えて

19

私たちはLinuxプロジェクト用のCMakeを使用しています。 CMakeはKDevelopとVisual Studioのプロジェクトファイルを生成することができるので、CMakeファイルをプラットフォーム固有のIDEファイルの起点として作成することができます。 KDevelopジェネレータは正常ですので、KDevelopで編集しコンパイルすることができます(これはMakeを呼び出します)。

一方、空想的なことがなければ、ソリューションファイル(私は現在ライブラリのためにやっているものです)にとどまりたいなら、CMakeを使うか、Makeを使ってLinux上にビルドしてくださいテストアプリケーションを使用して)。このアプローチは、ビルドプロセスが単に「コンパイラでこれらのファイルをスローし、それが何であるかを見てみよう」以上のものである場合には複雑になるため、CMakeのソリューションは私の意見ではクロスプラットフォーム開発にとっては良いことです。ここで

+0

私は既存のVisualStudio設定を使用してmakefileとして保存することができますか? Linuxで使用してください。それは可能ですか? /mspoerr – mspoerr

+2

Visual C++は、少なくともある程度前に、プロジェクト/ソリューションをメイクファイルにエクスポートすることをサポートしていました。あなたはそれを試すことができますが、結果として得られるメイクファイルは(その時に)血まみれの混乱です。 XSLTを作成して、プロジェクトファイル(ソリューションではありません)を、MakefileやCMakeファイルなど好きなものに変換しようとすることもできます。 – OregonGhost

4

Visual Studioで書かれたLinux用のC++アプリケーションを構築するには、どのような方法が最適ですか?コード自体は準備ができています - 私はクロスプラットフォームlibsだけを使用しました。

  • チェック標準C++
  • リンスの一部ではなく、メイクやKDevelopのプロジェクト

のEtほらを作成

  • を繰り返して何があるかどうか!

  • +1

    このメイクファイルはVisualStudioから生成できますか? Linuxで動かすためにはどのような変更が必要ですか? /mspoerr – mspoerr

    +2

    VSの一部のバージョンでは、Windows CLIベースのビルドシステムであるnmakeのメイクファイルを生成できます。 * nixシステムで見つけたものは少し異なります。違いを除外する必要があります。 IMO、それは簡単になります1)Code:Blocks(またはいくつかのクロスプラットフォームのIDE)とgccをWindowsで使用してビルドシステムを稼働させ、それをLinux上で使用するか、または2)KDevelopを使用する-n-VSと似てソースファイル/ libsなどを追加し、あなたのために作成されたautoconfベースのビルドシステムを取得します。 – dirkgently

    7

    は、追加のビルドツールなしのLinux の下で手動でCコードをコンパイルする方法である:

    gcc -s -O2 -o prog -I. -Iincludedir1 -Iincludedir2 -Llibdir1 -Llibdir2 code1.c code2.c -luse1 -luse2 
    

    しかし、あなたのプロジェクトは、ファイルのカップルよりも大きい場合、には、ビルド・ツールを使用することもできます代わりに(CMakeなど、OregonGhostの答えを参照)を使用して、多くのファイルのコンパイルを自動化し、インクリメンタルにします。ビルドツールを使用すると、上の同様の引数を使ってgccがgccで実行されます。上記の引数を理解すると便利です。自動ビルドが失敗した場合のトラブルシューティングを行うことができます。

    これは、実行可能なバイナリprog、。、includedir1とincludedir2から.hファイルをロードし、ライブラリ(たとえばlibuse1.so *とlibuse2)をロードするようにcode1.cとcode2.cをコンパイルします。libdir1とlibdir2のディレクトリから、use1(ファイル名libuse1.so *に対応)とuse2を使用して、*。

    .cファイルで未定義のシンボルエラーが発生した場合は、さらに-I個のフラグを指定する必要があります。 .oファイルで未定義のシンボルエラーが発生した場合は、さらに-l個のフラグを指定する必要があります。 cannot find -l...エラーが発生した場合は、さらに-Lフラグを指定する必要があります。

    +5

    私は彼が複数のファイルを持っていると仮定しています。 Makefileなしでコンパイルするのは愚かです。 – Zifre

    +0

    @Zifre:ビルドツールを推薦して答えを更新しました。ビルドツールを使用しても、私の答えはと思っており、トラブルシューティングのために洞察力があり、役立ちます。 – pts

    +0

    これはg ++のC++プロジェクトでなければなりませんか? –

    5

    8年後...

    今日はこの質問を偶然見つけ、あなたがVisual C++ for Linuxを見てみるのが好きかもしれないと思いました。

    2014年3月にリリースされたVC++ for Linuxでは、VC++でプロジェクトを作成し、ネイティブLinuxツールを使用してLinuxマシン/ VMにビルドすることができます。さらに、デバッグあなたのアプリはVS内からLinuxツールを使用すると、VSデバッガはあなたのLinuxマシン/ VMのSSH経由でGDBを駆動することができます。

    @mspoerrが求めていたのとほぼ同じように見えます:)

    関連する問題