web-dev-qa-db-ja.com

Eclipse CDT:すべてをターゲットにするルールはありません

以下のコードをコンパイルしようとすると、Eclipse CDTが「make:***ターゲットをすべてにするルールがありません」と文句を言い続けます。

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!!!" << endl; // prints Hello World!!!
  return 0;
}

誰もこれを解決する方法を知っていますか?私は同様のタイトルで投稿を読みました: make:***ターゲットを「すべて」にするルールはありません。Eclipseエラーを停止します しかし、これらの答えはどれも役に立ちません...

どうもありがとう!

38
Mark Z.

Eclipse-CDTがMakefileを管理するように、プロジェクトの設定を変更する必要があります。

  1. メニューバーから[プロジェクト]-> [プロパティ]を選択します。
  2. 表示されるダイアログの左側にある「C/C++ Build」をクリックします。
  3. 右側の「ビルダー設定」タブで、「Makefile生成」セクションの下にある「Makefileを自動的に生成」を選択します。
  4. [OK]をクリックして、再度ビルドします。
38
ScoPi

「動作」->「ビルド(増分ビルド)」タブには変数はありませんが、「すべて」がデフォルト設定です。として解決しました

  1. [プロジェクトのプロパティ]> [C/C++ビルド]> [動作]タブに移動します。
  2. ビルド(増分ビルド)をオンのままにします。
  3. [ビルド(増分ビルド)]の横のテキストボックスに「テスト」と入力します。
  4. ビルドプロジェクト。エラーメッセージが表示されます。
  5. ビルド(インクリメンタルビルド)に戻り、「テスト」を削除します。
  6. ビルドプロジェクト。
15
user1146300
  1. メニューバーから[プロジェクト]-> [プロパティ]を選択します。

  2. 表示されるダイアログの左側にある「C/C++ Build」をクリックします。

  3. 右側の[ビルダー設定]タブで、[ビルドの場所]が正しいことを確認します。
11
raptoravis

C/C++ビルド->ビルダー設定で、(外部ビルダーの代わりに)内部ビルダーを選択します。

わたしにはできる。

7
wall-e

私はちょうどこの問題を自分で解決しました。この質問も参照しました。

Eclipseが文句を言っている「すべて」のルールを書いていないことを前提としています。この場合、次の手順を実行します。

  1. [プロジェクトのプロパティ]> [C/C++ビルド]> [動作]タブに移動します。
  2. ビルド(増分ビルド)をオンのままにします。
  3. ビルド(インクリメンタルビルド)の横のテキストボックスから「すべて」を削除します。
  4. コンパイルして!

これにより、「all」と呼ばれるmakeターゲットを使用しようとしていないことがEclipseに認識されます。何らかの理由で、それがデフォルトです。

6
drmuelr

2つのケースがあります

  • 自分でMakefileを作成する場合は、
  1. メニューバーから[プロジェクト]-> [プロパティ]を選択します。
  2. 表示されるダイアログの左側にある「C/C++ Build」をクリックします。
  3. Makefileの自動生成を無効にする->右側の[ビルダー設定]タブで、[ビルドの場所]が正しいことを確認します(その場所はMakefileの場所です)
  • Makefileがない場合-> Makefileを作成するにはEclipse DS-5が必要です
  1. メニューバーから[プロジェクト]-> [プロパティ]を選択します。
  2. 表示されるダイアログの左側にある「C/C++ Build」をクリックします。
  3. メイクファイルの自動生成を有効にする

自分でMakefileを作成することをお勧めします

3
Dang_Ho

Makeファイルでターゲットを作成している場合、すべてのcファイルが正しいファイル構造で正しく名前が付けられていることを二重にチェックすることがあります。

2
bilalraja

Project-> Clean-> Clean all Projects and then Project-> Build Project work for me(私はチェックを外してメイクファイルを自動的に生成し、それを行う前に再チェックしました)。これは、Eclipse JunoのAVR CDTプラグインを介したAVR(マイクロプロセッサプログラミング)プロジェクト用でした。

2
Demortes

ソースファイルの名前を変更して移動した後、この同じエラーが発生しました。提案された解決策はどれも私にとってはうまくいきませんでした。デバッグディレクトリの下のメタファイルが更新されていないことをエラーを追跡しました。 Debugディレクトリ全体を削除してプロジェクトを再ビルドすると、問題が解決しました。

1
sava

さらに別のソリューション:

Objects.mkファイルの中に入れました

################################################################################
# Automatically-generated file. Do not edit!
################################################################################

USER_OBJS := /home/../mylib.so

LIBS := -lstdc++fs -lGL -lGLU -lGLEW -lglut -lm -lmylib

その後、最初の行を読みませんでした。次に、次の行を変更しました。 「プロジェクトのコピー/クローン」機能を使用してこれをコピーしたため、別のプロジェクトのフォルダであり、これがエラーの原因でした。 myLib.soを/proper_address/reallyMyLib.soに変更し、機能しました。

警告:未知の場所に損害を与える可能性があります!これを行う前にプロジェクト全体をバックアップしてください。 「編集しない」と言うからです。

上記の解決策がうまくいかなかった場合-

C++コンパイラパッケージを適切にインストールしなかった可能性があります。これをフローします(Win7、32ビット/ 64ビットの手順)。

  1. 適切に1つ以上をサポートするC++コンパイラパッケージをインストールしてください。

    (MinGWをインストールしました(インストール方法はYouTubeにあります))

    MinGWパッケージのインストールを選択した場合:

    • 上記のインストールページからMinGWインストーラーをダウンロードします。
    • MinGWインストーラーを実行し、次のパッケージを選択してください。

      -mingw-developer-toolkit
      -mingw32-base
      -mingw32-gcc-g ++
      -msys-base

    • MinGWおよびMSYS binパスをPATH環境変数に追加します。デフォルトのインストールフォルダーを変更していない場合は、追加する必要があります。

    C:\MinGW\msys\1.0\bin;C:\MinGW\bin;
    • 環境変数が作動することを確認するためにログオフしてログインし直してください
  2. Eclipseで新しいC++プロジェクトを作成します。

    • 新規-> C++プロジェクト
    • プロジェクトタイプを選択します。実行可能ファイル-> Hello World C++プロジェクト
      (右側、ツールチェーンの下にMinGW GCCが表示されます)
    • [ツールチェーン]リストから[MinGW GCC]を選択します
    • ヒットフィニッシュ
  3. Hello Worldプロジェクトには、+ srcフォルダーと+ Includesが表示されます(そうであれば、おそらく行ってもいいでしょう)。

  4. ビルドプロジェクト
  5. それを実行します!
0
Mercury