106

Linux および Windows でコンパイルされるコードのオープン ソース C++ プロジェクトに取り組んでいます。Linux でコードをビルドするには、CMake を使用します。開発のセットアップの容易さと政治的な理由から、Windows では Visual Studio プロジェクト ファイル/エディターに固執する必要があります (たとえば、Code::Blocksに切り替えることはできません)。hereのように、CMake を使用して Visual Studio ファイルを生成する手順が表示されます。

以前に CMake を使用して Visual Studio ファイルを生成したことがありますか? あなたの経験はどうですか?プロジェクトに新しいファイルを追加するとします。このためのワークフローは何ですか?

4

7 に答える 7

64

CMake は実際、これにはかなり適しています。重要な部分は、Windows 側の全員がソリューションにロードする前に CMake を実行することを覚えておく必要があり、Mac 側の全員が make の前に CMake を実行することを覚えておく必要があることです。

最も困難な部分は、Windows 開発者として、構造上の変更がソリューションやプロジェクト ファイルではなく cmakelist.txt ファイルにあることを確認することでした。これらの変更はおそらく失われ、失われなくても Mac 側に転送されないためです。また、Mac 関係者は、同じ理由で make ファイルを変更しないことを覚えておく必要があります。

少しの考えと忍耐が必要ですが、最初は間違いがあります。しかし、両側で継続的インテグレーションを使用している場合、これらは早期に解決され、人々は最終的に習慣になります。

于 2008-12-27T18:01:53.737 に答える
55

質問に直接関係しているかどうかはわかりませんが、cmake プロジェクトから *.sln を生成する方法についての回答を探していましたが、次のようなものを使用できることがわかりました。

cmake -G "Visual Studio 10"

この例では、入力 CMakeLists.txt ファイルから必要な VS 2010 ファイルを生成します。

于 2012-02-13T11:39:43.123 に答える
27

私たちの部門のビルド チェーンを CMake に移行しました。他の部門が私たちのプロジェクト ファイルを使用し、それらをソリューションにインポートすることに慣れているため、いくつかの内部的な障害がありました。また、CMake が Visual Studio プロジェクト/ソリューション マネージャーに完全に統合されていないという苦情もありました。そのため、手動でファイルを CMakeLists.txt に追加する必要がありました。これは、人々が慣れ親しんでいたワークフローに大きな変化をもたらしました。

しかし、全体的には非常にスムーズな移行でした。プロジェクト ファイルを扱う必要がなくなったので、非常に満足しています。

プロジェクトに新しいファイルを追加するための具体的なワークフローは非常に簡単です。

  1. ファイルを作成し、正しい場所にあることを確認してください。
  2. ファイルを CMakeLists.txt に追加します。
  3. 建てる。

CMakeLists.txt ファイルが変更された場合、CMake 2.6 は自動的に再実行されます (そして (半) 自動的にソリューション/プロジェクトをリロードします)。

ソース外のビルドを行う場合は、ビルド ディレクトリにソース ファイルを作成しないように注意する必要があります (Visual Studio はビルド ディレクトリしか認識していないため)。

于 2008-12-28T19:03:22.190 に答える
13

CMake は、Visual Studio プロジェクトとソリューションをシームレスに生成します。CMake ファイルに変更を加えることなく、さまざまな Visual Studio バージョンのプロジェクト/ソリューションを作成することもできます。

ソース ファイルの追加と削除はCMakeLists.txt、ソース ファイルのリストを含む を変更し、プロジェクト/ソリューションを再生成するだけです。ディレクトリ内のすべてのソースを検索するためのグロビング機能もあります (注意して使用する必要があります)。

次のリンクは、CMake と Visual Studio 固有の動作を非常によく説明しています。

CMake と Visual Studio

于 2014-01-18T07:41:31.143 に答える
10

アレックスが言うように、それは非常にうまく機能します。唯一の注意点は、Visual Studio 内からではなく、cmake ファイルで変更を行うことを忘れないことです。したがって、すべてのプラットフォームで、単純な古い makefile を使用した場合とワークフローは似ています。

しかし、操作はかなり簡単で、cmake が無効なファイルを生成するなどの問題は発生していないので、あまり心配する必要はありません。

于 2008-12-27T21:26:02.530 に答える
6

CMake は非常に優れた Visual Studio .projs/を生成できますが、 /ではなくファイル.slnsを変更する必要があるという問題が常にあります。現在、以下のように対応しております。.cmake.proj.sln

  1. すべてのソース ファイルに移動し/src、Visual Studio で表示されるファイルは、.filter.
  2. プログラマーは/src、デフォルトのプロジェクトのディレクトリではなく、定義されたディレクトリで作業することを忘れずにファイルを追加/削除します。
  3. 完了したら、それぞれのファイルを「更新」するスクリプトを実行し.cmakeます。
  4. 彼は、再作成された環境でコードをビルドできるかどうかを確認します。
  5. 彼はコードをコミットします。

最初はどうなるか少し心配でしたが、ワークフローは非常にうまく機能し、各コミットの前に素晴らしい差分が表示されるため、変更が.cmakeファイルに正しくマッピングされているかどうかを誰もが簡単に確認できます。

知っておくべきもう1つの重要なことは、CMakeの「ソリューション構成」のサポート( afaik )がないことです。現状では、プロジェクト/ソリューションを含む2 つのディレクトリを生成する必要があります。ビルド タイプ (デバッグ、リリースなど) ごとに 1 つです。より高度な機能に対する直接的なサポートはありません。つまり、構成を切り替えても期待どおりの結果が得られません。

于 2011-03-22T21:22:04.093 に答える