CmakeのプラグインCDTを使用してEclipse「Helios」を構成する方法
cmake all
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not exist.
Eclipseは常に「すべて」オプションを使用することを望んでおり、使用しないために停止する方法がわかりません。
「ビルド動作」セクションの「環境設定」に「すべて」オプションがあります。私はこれを消去しましたが、まだ間違って動作します(これと同じエラー)。
Eclipse-CDTでは、create cmakeプロジェクトではなく、cmakeプロジェクトをインポートします。これはあなたがすべきことです:
「Planner」という名前のCMakeプロジェクトのソースがD:/javaworkspace/src/Planner
にあるとします
フォルダーを作成します(フォルダーは互いに平行にする必要があります):D:/javaworkspace/build/Planner
フォルダーD:/javaworkspace/build/Planner
に移動し、Eclipseジェネレーターを使用してCMakeを実行します。
cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
これにより、Plannerプロジェクトのmakeファイルが生成されます。
これをEclipseにインポートするには、次の手順を実行します。
ファイル->インポート->既存のコードをMakefileプロジェクトとして
[既存のコードの場所]としてD:/javaworkspace/build/Planner
(makeファイルを含むビルド出力フォルダー)を選択します
しかし、あなたのパスを見ると、あなたはWindowsで作業しているように思えます。 Windowsでは、CMakeはVisual Studioプロジェクトを生成できます。 CMakeを使用する場合は、まずCMakeを使用して「hello world」プロジェクトを作成することをお勧めします(EclipseはCMakeプロジェクトを作成しないため、CMakeLists.txtファイルを手動で作成する必要があります)
私に最適なのはcmake4Eclipseです。マーケットプレイスから入手できるプラグインです。
Cmake4Eclipseヘルプテキストの一部:
CMake for CDTを使用するには、既存のC/C++プロジェクトが必要です。 CDTに組み込まれているジェネレーターの代わりに、makefileのジェネレーターとしてcmakeを使用できます。詳細については、CMakeビルドスクリプト生成の有効化を参照してください。
既存のソースコードを使用して新しいプロジェクトを設定するには、次の手順に従ってください。
- ソースコードを確認してください。
- 新しいC/C++プロジェクトウィザードを開きます( "File" => "New" => "C Project"または "File" => "New" => "C++ Project")。
- プロジェクトの場所がチェックアウト済みファイルのルートディレクトリを指していることを確認します
- プロジェクトの種類として、[実行可能ファイル]を選択します。共有ライブラリまたは静的ライブラリを選択することもできます。重要ではありません。その情報はCMakeLists.txtから取得されますが、CDTには必要です。ここでMakefileプロジェクトを選択しないでください!
- プロジェクトの作成を完了します。
- [プロジェクトのプロパティ]ダイアログを開きます。
- [C/C++ Build]ノードと[Builder設定]タブを選択し、[Makefileを自動的に生成する]がオンになっていることを確認します。
- 「Tool Chain Editor」ノードを選択し、「CMake Make Builder」を現在のビルダーとして設定します。
- 最上位のCMakeLists.txtがチェックアウトされたファイルのルートディレクトリにない場合は、「C/C++ General」「Path and Symbols」ノードおよび「Source Location」タブを選択します。次に、ソースフォルダを調整して、CMakeLists.txtファイルを含むディレクトリを指すようにします。これにより、CDTインデクサーはプロジェクトのヘッダーファイルをスキャンします。
- プロのヒント:C/C++ ProjectsビューでBinariesまたはArchivesフォルダーが見つからない場合は、チェックアウトしたファイルのルートディレクトリにCMakeLists.txtファイルを追加します。プロジェクトをビルドします。これにより、必要に応じてcmakeが呼び出されてビルドスクリプトが生成され、makeが呼び出されます。
Cmake -G Eclipse CDT4-Unix Makefilesを使用して手動で作成したEclipseプロジェクトをインポートしようとしないでください。これにより、従来のMakefileプロジェクトのルートに移動できます。
このプラグインの最大の利点は、プロジェクトのインデックス作成にcmakeエクスポートコンパイラオプションを使用できることです。
これにより、「CDT GCCビルドインコンパイラー設定」のみを使用して「コンパイラー仕様を取得するコマンド」に「-std = c ++ 14」のようなものを追加したときに悩まされた厄介なインデクサーの問題がすべて修正されました。
Eclipse MakefileプロジェクトでCMAKEを使用する(win):
1)新しい「Makefile Project with Existing Code」を作成します
2)ビルダーの設定を変更します(プロジェクトのプロパティ-> C/C++ビルド->ビルダーの設定):
ビルドコマンド:cmd/c "mkdir $ {PWD}&cd/D $ {PWD} && $ {CMAKE} -G" Unix Makefiles "$ {ProjDirPath} && make"
ビルドディレクトリ:$ {workspace_loc:/ IoT_SDK}/build/$ {ConfigName}
それで全部です!
受け入れられた回答に加えて、Eclipseバージョンを指定する必要があります。
Eclipse Luna(4.4):
cmake -G"Eclipse CDT4 - Unix Makefiles" -D_Eclipse_VERSION=4.4 ../../src/Planner
Eclipseケプラー(4.3):
cmake -G"Eclipse CDT4 - Unix Makefiles" -D_Eclipse_VERSION=4.3 ../../src/Planner
別のまったく異なる方法。
空のEclipseプロジェクトを手動で作成します。
[プロジェクトプロパティ]-> [C/C++全般]-> [パスとシンボル]-> [ソースの場所]からソースディレクトリをリンクします。
デバッグおよびリリースビルドディレクトリに「Make Targets」を作成します(「Make Targets View」を使用)。 [ターゲットの作成]フィールドを空のままにし、[コマンド]フィールドをcmake -G "Unix Makefiles" <path/to/the/sources>
。
作成した「ターゲットの作成」をダブルクリックすると、デバッグ/リリースディレクトリ内でcmake呼び出しがトリガーされます。
「プロジェクトのプロパティ-> C/C++ビルド」で、組み込みのmakefileジェネレーターを無効にします。
これで通常のビルドが機能するはずです。また、CMakeLists.txtファイルの変更を(CMakeが可能な範囲で)ピックアップします。
外部インクルードを使用したどの方法でも、インデックスが作成されていません。
これは、CMAKEがそれらのファイル内のすべてのインクルードを隠す「応答ファイル」を使用し、代わりに直接使用するためです(-IPATH_TO_SOME_DIR)
「応答ファイル」を無効にするには、次のコマンドを使用しました。
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES NO)
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES NO)
CMAKEにgcc/g ++の実行を強制的に表示させるために、make buildターゲットを「all VERBOSE = 1」に変更しました。 cmake4Eclipseを使用している場合、これは必要ないことに注意してください。
バージョン9.6のCDTでバージョン2018-12(4.10.0)のEclipseを使用しています。