4

Linux で GNU C++ から作成された makefile を使用して C++ プログラムを Visual C++ に移植するにはどうすればよいですか?

4

5 に答える 5

2

ビルド システムの移植: GNU make の Windows ポートを使用し、makefile を変更して、Windows でビルドする場合は Visual C++ コマンド ライン ツール ( cl.exelink.exelib.exeなど) を呼び出し、Linux でビルドする場合は GNU コンパイラ ツールを呼び出すことができます。このアプローチの難しさは、makefile の複雑さによって異なります。

コードの移植:これは、使用している API とライブラリ、および発生するコンパイラの警告/エラー/癖によって異なります。より具体的な回答が必要な場合は、より具体的な質問をしてください。

于 2009-03-18T03:49:02.887 に答える
2

あるものから別のものに単純に変換する簡単な方法については知りませんが..

ANSI C/C++ 機能のみを使用すると仮定すると、通常、makefile を変換する必要はありません。その中の .c/.cpp ファイルを調べて、それらを VS プロジェクトに追加するだけです。また、VS プロジェクト内に配置するために、コンパイラ オプションと定義されたマクロについても確認する必要があります。これを行って、expat、freetype、agg などのライブラリを問題なくコンパイルしました。

于 2009-03-17T13:27:12.947 に答える
1

CMakeが言及されました。私は CMake を使用し、結果の Visual Studio プロジェクトを正常にコンパイルしました。CMake のドキュメントは非常に役に立たないことがわかりました。既存のユーザーに尋ねなければなりませんでした。当時、公式マニュアル (費用がかかります) は絶版でした。さらに、それが作成した Visual Studio プロジェクトは、コンバーターの作成者が好むテンプレートに従って非常に厳密にフォーマットされていました。プロジェクト オプションをカスタマイズしたり、ソース ファイルをグループ化する方法がわかりませんでした。

私は定期的に Visual Studio と G++ でクロスコンパイルを行っています。ほとんどの場合、すべてのソース ファイルとヘッダー ファイルを Visual Studio プロジェクトに追加して ([既存のファイルを追加] し、ソース ツリー全体を追加)、コンパイルするだけです。通常はエラーが発生するので、そこからバグの修正を開始します。プラットフォーム固有のライブラリを使用していた場合は、代替への移植や機能の削除で行き詰まっている可能性があります。

もう 1 つ注意が必要です。Visual Studio と G++ には異なるコンパイラの癖があります。ほとんどの場合、どちらも C++ 標準に完全に準拠していますが、一方では機能するわずかに標準外のコードが他方では機能しない場合があります。Visual Studio は多くの場合、奇妙なことに構文エラーを許容しているため、テンプレートを扱う場合は特にそうであることがわかりました。

于 2009-03-22T09:41:44.307 に答える