12

私が尋ねようとしているものと同様の質問をたくさん見つけましたが、実行可能であると仮定して、やりたいことを行う方法を理解するのに役立つとは思えません。

私は Visual Studio をかなり楽しんでおり、C++ プロジェクトの開発環境として使用したいと考えていますが、必要に応じて、デュアル ブート Linux システムで自分のプロジェクトをビルドできるようにしたいとも考えています。また、ヘッダーとソース ファイルを共有ドライブ上の特定のディレクトリ構造に整理できるようにしたいと考えています。CMake を使用してプロジェクトを構成し、Linux の Make または Windows の Visual Studio でビルドしたいと考えています。

Visual Studio 2012 Pro でプロジェクトを維持して、その IntelliSense とコンパイルを利用して、コードをすばやく記述してテストし、ソース ファイルを別のディレクトリで CMake 構成の一部にすることは可能ですか (私は何があっても CMake .txt ファイルを維持する必要があります)?

コードを追加または変更するたびにソースをプロジェクト ディレクトリから CMake ファイル フォルダーにコピーし、CMake .txt ファイルを更新するなどの操作を行うことができますが、時間がかかるようです。

ソリューションを CMake ファイルに変換するコンバーターがあることは知っています。それが私の最善の選択肢ですか?もしそうなら、それはうまくいきますか?

4

2 に答える 2

5

あなたの質問に対する私の最良の答え:

使ったことがないのでお勧めできませんが、お探しのものに一番近いようです。

http://sourceforge.net/projects/vcproj2cmake/

マシンにRubyランタイムをインストールする必要がありますが、VisualStudioプロジェクトに基づいてCMakeLists.txtファイルが生成されます。

変換で失われる微妙なCMakeのニュアンスがあるかもしれないので、これに依存しすぎると注意しますが、いくつかの好ましいレビューがあり、チェックする前にいくつかの手動の手順が含まれている場合でも、確かにプロセスが簡単になりますin(CMakeスクリプトが正しいことを確認するため)。

おそらく、これを単体テストと統合して、CMakeスクリプトの整合性を検証できますか?そして、あなたはいつでもあなたが見つけた問題のためのパッチを提供することができます。

潜在的な代替案:

私はいくつかのことを推測しているので、私が何か仮定をしているなら許してください。

あなたの目標がクロスプラットフォームであり、CMakeがテクノロジーとしての要件ではない場合(そのための手段にすぎません)、推奨されるCMakeワークフローを使用することはあまり直感的ではないため採用したくありません(私は完全に理解できます)それ)、おそらくあなたはPremakeを見ることができます。これは新しいですが、それでもかなり堅牢なプロジェクト生成ツールです。

構文(純粋なLua)は、理解しやすく、プロジェクトをVisualStudioソリューションに非常に近い形でモデル化していることがわかりました。これはあなたにとってより自然なワークフローかもしれません。

また、オープンソースであり、実際に驚くほど簡単に拡張機能を追加できることがわかりました(最後に使用してから1年が経ちましたが、現在の状態はわかりません)。ライブラリにはVisualStudioプロジェクトパーサーが付属しており、少しの創造性で双方向に生成できるため、おそらくリバースジェネレーターを構築することもできます。

1年前は、相互に依存するXcodeプロジェクトを生成するのが困難だったため、採用しないことにしました(おそらく修正されました!)。ただし、MakefileまたはVisualStudioソリューションに問題はありませんでした。

最終的な推奨事項

Visual Studioプロジェクトからプロジェクト生成スクリプトを逆生成することをお勧めしない理由は、プロジェクトに非常に厄介な依存関係を置くためです。Visual Studioプロジェクトは標準化されておらず、オープンでもありません。Microsoftがフォーマットを変更した場合、あなたまたは他の誰かがリバースジェネレーターのパッチを作成して作業を再開するまで、ワークフローを中断する可能性があります。

プロジェクトの生成には同じ問題があると主張することもできますが、Visual Studioには歴史的に常に下位互換性があります。または、少なくともプロジェクトの更新を実行するためのツールが付属しています。古いバージョンでプロジェクトを生成することはほとんどの場合常に機能しますが、Visual Studioソリューションの新しいリビジョンを解析しようとすると、エラーや破損が発生しやすくなります。

これが今後何年にもわたって使用および維持されることを望む深刻な制作プロジェクトの場合は、理想的とは言えない、または不快な場合でも、実績のあるワークフロー(CMa​​keまたはPremakeファイルで直接作業する)を採用することを強くお勧めします。開発者にとって最初。長期的なプロジェクトになる場合、新しいワークフローに慣れるのにかかる時間は、複数のプラットフォームやさまざまなチームにまたがるアドホックビルドシステムを維持し続けるのにかかる時間よりも短くなります。さらに、開発者としてベルトに別のツールを追加します。ちょうど私の2セント。

于 2013-03-16T19:57:35.107 に答える
1

私の最近の経験を考慮すると、CMake を使用してEclipseまたは Visual Studio ソリューション ファイルを生成できたとき、ソリューションを CMake ファイルに自動的に変換することはお勧めしません。Visual Studio のプロジェクト ファイルには、多くの場合不要な情報やパラメーターが含まれているか、CMake で直接サポートされていないか (さまざまなコンストラクトで表現された機能)、サポートされていません。

また、すべてのソースとプロジェクト ファイルのソリューションのレイアウトは非常に奇妙で、他のプラットフォームでは不便な場合があります。

生成されたファイルをクリーンアップするには、クリーンな CMake ファイルを最初から作成するよりも時間がかかると思います。また、プロジェクト構造を完全に制御できるため、より合理的な方法でもあります。

私の場合、次の CMake コマンドで Visual Studio ソリューションを生成しました。

cmake -G "Visual Studio 10" -D DEBUG=0 .

Windows でのコマンド ライン バッチ ビルドおよびインストールの場合は、次のようにします。

cmake --build . --target install --config VC_CONFIGURATION_1  -- "/v:m"
cmake --build . --target install --config VC_CONFIGURATION_2  -- "/v:m"

CMake ファイル自体はクロスプラットフォームです。もちろん、構成を定義する Windows 固有の行がいくつかあり、add_executable() には WIN32 オプションがありますが、このプラットフォームに対してのみ条件を付けることができます。

于 2013-03-21T10:20:33.057 に答える