web-dev-qa-db-ja.com

cmake用にEclipse CDTを構成する方法は?

CmakeのプラグインCDTを使用してEclipse「Helios」を構成する方法

cmake all 
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not    exist.

Eclipseは常に「すべて」オプションを使用することを望んでおり、使用しないために停止する方法がわかりません。

「ビルド動作」セクションの「環境設定」に「すべて」オプションがあります。私はこれを消去しましたが、まだ間違って動作します(これと同じエラー)。

20
kspacja

Eclipse-CDTでは、create cmakeプロジェクトではなく、cmakeプロジェクトをインポートします。これはあなたがすべきことです:

  1. 「Planner」という名前のCMakeプロジェクトのソースがD:/javaworkspace/src/Plannerにあるとします

  2. フォルダーを作成します(フォルダーは互いに平行にする必要があります):D:/javaworkspace/build/Planner

  3. フォルダーD:/javaworkspace/build/Plannerに移動し、Eclipseジェネレーターを使用してCMakeを実行します。

    cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
    

    これにより、Plannerプロジェクトのmakeファイルが生成されます。

  4. これをEclipseにインポートするには、次の手順を実行します。

    ファイル->インポート->既存のコードをMakefileプロジェクトとして

    [既存のコードの場所]としてD:/javaworkspace/build/Planner(makeファイルを含むビルド出力フォルダー)を選択します

しかし、あなたのパスを見ると、あなたはWindowsで作業しているように思えます。 Windowsでは、CMakeはVisual Studioプロジェクトを生成できます。 CMakeを使用する場合は、まずCMakeを使用して「hello world」プロジェクトを作成することをお勧めします(EclipseはCMakeプロジェクトを作成しないため、CMakeLists.txtファイルを手動で作成する必要があります)

30
gvd

私に最適なのは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エクスポートコンパイラオプションを使用できることです。

  • [プロジェクトのプロパティ]ダイアログを開きます。
    • 「C/C++ General」ノードと「Preprocessor Includes Paths、Macros。」を選択しますタブ。 「CMAKE_EXPORT_COMPILE_COMMANDSパーサー」を選択し、リストの一番上に移動します。
    • 「OK」を押してダイアログを閉じます。今すぐ1つのビルドをトリガーし、インデックスを再作成してください。

Provider tab

これにより、「CDT GCCビルドインコンパイラー設定」のみを使用して「コンパイラー仕様を取得するコマンド」に「-std = c ++ 14」のようなものを追加したときに悩まされた厄介なインデクサーの問題がすべて修正されました。

15
Martin Gerhardy

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}

それで全部です!

5

受け入れられた回答に加えて、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
2
caiiiycuk

別のまったく異なる方法。

  • 空のEclipseプロジェクトを手動で作成します。

  • [プロジェクトプロパティ]-> [C/C++全般]-> [パスとシンボル]-> [ソースの場所]からソースディレクトリをリンクします。

  • デバッグおよびリリースビルドディレクトリに「Make Targets」を作成します(「Make Targets View」を使用)。 [ターゲットの作成]フィールドを空のままにし、[コマンド]フィールドをcmake -G "Unix Makefiles" <path/to/the/sources>

  • 作成した「ターゲットの作成」をダブ​​ルクリックすると、デバッグ/リリースディレクトリ内でcmake呼び出しがトリガーされます。

  • 「プロジェクトのプロパティ-> C/C++ビルド」で、組み込みのmakefileジェネレーターを無効にします。

これで通常のビルドが機能するはずです。また、CMakeLists.txtファイルの変更を(CMakeが可能な範囲で)ピックアップします。

より詳細な説明: https://stackoverflow.com/a/38140914/4742108

1
Velkan

外部インクルードを使用したどの方法でも、インデックスが作成されていません。

これは、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を使用しています。

1
Piotr Sydow