10

Windows および Linux (RHEL) プラットフォームを対象とした C++ プロジェクトに携わっています。これまで、開発は純粋に Visual Studio 2008 で行われていました。Linux のコンパイルには、VS ソリューション/peroject ファイルを読み取り、Linux マシンでリモートでコンパイルするサードパーティの Visual Studio プラグインを使用しました。

最近、サードパーティのプラグインを放棄することが決定されました。

今、私の大きな関心事はビルドシステムです。クロスプラットフォームのビルドツールを探していました。この方法では、ビルド ファイルの 2 つのセット (たとえば、Windows 用の vcproj/solution と Linux 用の make ファイル) を維持する必要はありません。

次の候補が見つかりました。スコンズ b. cmake

クロスプラットフォーム開発のツールについてどう思いますか?

私を悩ませているもう 1 つの点は、Visual Studio (+ Visual Assist) は vcproj ファイルがないと多くの機能を失うことです。ツールで問題をどのように処理しますか?

ありがとうディマ

PS 1: Scons について私が気に入っているのは、(a) Python を使用しているため柔軟であるのに対し、cmake は適切な言語を使用している (ビルドシステムの勝者の機能ではないことを理解しています) (b) 自己完結型 (必要ありません) Linux で cmake と同様に makefile を生成します)。

では、なぜ Scons ではないのでしょうか? プロジェクトで cmake を使用することにしたのはなぜですか?

4

6 に答える 6

10

CMake では、Visual Studio ソリューションとプロジェクト ファイルを引き続き使用できます。Cmake はソース コード自体をビルドするのではなく、ビルド ファイルを生成します。Linux の場合、これは Code::Blocks、KDevelop、プレーンな makefile、またはさらに難解な選択肢のいずれかになります。Windows の場合は、Visual Studio プロジェクト ファイルや、MacOS の場合もあります。したがって、Visual Studio のソリューションとプロジェクトは CMakeLists.txt から作成されます。これは、大きなプロジェクトでも問題なく機能します。たとえば、現在の Ogre3d はすべてのプラットフォーム (Windows、Linux、MacOS、および IPhone) で CMake を使用しており、非常にうまく機能します。

私はその点で scons についてあまり知りませんが、以前は 1 つのライブラリーだけを構築し、Linux でのみ構築していました。したがって、これら2つを公正な立場で比較することはできません。しかし、私たちのマルチプラットフォーム プロジェクトでは、CMake は十分に強力です。

于 2009-07-09T23:19:53.377 に答える
3

私は以前に Scons を使用したことがないので、それがどのように機能するかはわかりませんが、CMake はかなりうまく機能します。

ターゲットとするプラットフォームに必要なビルド ファイルを生成することで機能します。

VC++ をターゲットにするために使用すると、VS からソリューション ファイルとプロジェクト ファイルが生成されるため、ネイティブの VS プロジェクトであるかのように見えます。もちろん、唯一の違いは、VS を介してプロジェクトまたはソリューションを直接編集すると、プロジェクト/ソリューション ファイルが上書きされるため、次に CMake を実行したときに変更が消去されることです。

そのため、代わりに CMake ファイルに変更を加える必要があります。

于 2009-07-09T23:20:31.270 に答える
3

別のオプションはプリメイクです。定義ファイルからソリューションを生成するという点で、cmake に似ています。これはオープン ソースであり、最新バージョンは Lua スクリプトを使用して非常に高度にカスタマイズ可能です。カスタム プラットフォーム サポートをそれほど問題なく追加することができました。あなたの状況では、Visual Studio と GNU makefiles 標準の両方をサポートしています。

Premake 4.0 のホームページを参照してください

CruiseControl は、継続的インテグレーションに適しています。Mono を使用して Linux で実行することに成功しました。

于 2009-07-10T02:57:59.257 に答える
1

これは、KDE ​​開発者が SCons ではなく CMake を選択するという決定についての記事です。ただし、この記事はほぼ 3 年前のものであるため、scons は改善されているはずです。

ここでは、SCons と他の構築ツールとの比較を示します。

于 2009-07-10T02:32:05.073 に答える
0

過去にこれをたくさんしなければなりませんでした。私たちが行ったことは、時々ウィンドウを含む事実上すべてに gnu make を使用することです。

Linux 用の gnu make を使用したい場合は、Windows でプロジェクト ファイルを使用できます。

クロス プラットフォームの makefile を記述するのに適切な方法はありません。これは、ターゲット ファイルが他のもの (およびパス名の問題、\ と / など) によって異なるためです。一般に、さまざまなプラットフォーム間でコードを微調整して微妙な違いを考慮に入れることになるので、make ファイルを微調整して他のプラットフォームをチェックする必要があります。

多くの OS プロジェクトは、zlib などのさまざまなプラットフォーム用の Makefile を維持しており、Makefile.win、Makefile.linux などの名前が付けられています。彼らのリードに従うことができます。

于 2009-07-09T23:25:33.583 に答える