it-swarm.com.ru

Eclipse CDT: нет правил для цели

Мой Eclipse CDT продолжает жаловаться: «make: *** нет правила для достижения цели all», когда я пытаюсь скомпилировать фрагмент кода ниже: 

#include <iostream>
using namespace std;

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

Кто-нибудь знает, как решить эту проблему? Я прочитал пост с похожим названием: make: *** Нет правила для цели `all '. Стоп. Ошибка затмения Но ни один из этих ответов не помогает ...

Большое спасибо!

35
Mark Z.

Вам нужно изменить настройки вашего проекта, чтобы Eclipse-CDT управлял вашими Make-файлами для вас.

  1. Выберите Project-> Properties в строке меню.
  2. Нажмите C/C++ Build слева в появившемся диалоговом окне.
  3. На вкладке «Настройки Builder» справа выберите «Автоматически создавать Makefile» в разделе «Создание Makefile».
  4. Хит ОК и построить снова.
36
ScoPi

"all" - это настройка по умолчанию, хотя вкладка Behaviour-> Build (Incremental build) не имеет переменных. Я решил как

  1. Перейдите в Свойства проекта> Сборка C/C++> Вкладка «Поведение».
  2. Leave Build (Добавочная сборка) Проверено.
  3. Введите «тест» в текстовом поле рядом с «Построить» (Incremental Build).
  4. Построить проект. Вы увидите сообщение об ошибке.
  5. Вернитесь в Build (Incremental Build) и удалите «тест».
  6. Построить проект.
13
user1146300
  1. Выберите Project-> Properties в строке меню.

  2. Нажмите C/C++ Build слева в появившемся диалоговом окне.

  3. На вкладке «Настройки Builder» справа проверьте и убедитесь, что «Расположение сборки» указано правильно.
10
raptoravis

В C/C++ Build -> Builder Settings выберите Внутренний построитель (вместо Внешнего построителя).

Меня устраивает.

7
wall-e

Я только что решил эту проблему для себя; даже ссылался на этот вопрос.

Я предполагаю, что вы не написали правило «все», на которое жалуется Eclipse. Если это так, выполните следующие действия:

  1. Перейдите в Свойства проекта> Сборка C/C++> Вкладка «Поведение».
  2. Leave Build (Добавочная сборка) Проверено.
  3. Удалите «все» из текстового поля рядом с «Построить» (Incremental Build).
  4. Скомпилируйте!

Это позволяет Eclipse знать, что вы не пытаетесь использовать цель make под названием «all». По какой-то причине это по умолчанию.

6
drmuelr

У вас есть 2 случая

  • Если вы создаете Makefile самостоятельно, перейдите к 
  1. Выберите Project-> Properties в строке меню.
  2. Нажмите C/C++ Build слева в появившемся диалоговом окне.
  3. Отключить создание make-файла автоматически -> На вкладке «Настройки Builder» справа проверьте и убедитесь, что «Build location» - это правильно (это место, где ваш Makefile)
  • Если у вас нет Makefile -> вам нужен Eclipse DS-5, чтобы помочь вам создать Makefile
  1. Выберите Project-> Properties в строке меню.
  2. Нажмите C/C++ Build слева в появившемся диалоговом окне.
  3. Включить генерацию make-файла автоматически

Я советую вам создать Makefile самостоятельно

3
Dang_Ho

Иногда, если вы делаете цель с помощью make files, дважды проверяйте, что все файлы c названы правильно с правильной структурой файла. 

2
bilalraja

Project -> Clean -> Clean all Projects, а затем Project -> Build Project сработал для меня (я автоматически отключил генерацию make-файла и затем перепроверил его перед этим). Это было для проекта AVR (программирование микропроцессора) через плагин AVR CDT в Eclipse Juno. 

2
Demortes

Я получил эту же ошибку после переименования и перемещения по исходным файлам. Ни одно из предложенных решений не помогло мне, и я отследил ошибку, чтобы метафайлы в каталоге Debug не обновлялись. Удаление всего каталога Debug и повторная сборка проекта решили проблему для меня.

1
Savvas Savvides

Еще одно решение:

Я попал внутрь файла 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, и это сработало.

Предупреждение: это может повредить некоторые неизвестные места! Сделайте резервную копию всего проекта, прежде чем делать это. Потому что там написано "не редактировать".

0
huseyin tugrul buyukisik

Если вышеперечисленные решения не сработали у вас так - 

Возможно, вы неправильно установили пакеты компилятора C++, выполните следующее: (Инструкции для Win7, 32-битная/64-битная версия)

  1. Убедитесь, что вы правильно установили один или несколько из поддерживаемых пакетов компилятора C++:

    (Я установил MinGW (Как установить видео можно найти на YouTube))

    Если вы решили установить пакеты MinGW:

    • Загрузите установщик MinGW со страницы установки выше
    • Запустите установщик MinGW и убедитесь, что вы выбрали следующие пакеты:

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

    • Добавьте пути к корзинам MinGW и MSYS в переменную среды PATH, если вы не изменили папки установки по умолчанию, добавьте:

    C:\MinGW\msys\1.0\bin;C:\MinGW\bin;
    • Выйдите из системы и войдите снова, чтобы убедиться, что переменные среды активны
  2. Создайте новый проект C++ в Eclipse:

    • Новые -> C++ Проекты
    • Выберите тип проекта: Исполняемые файлы -> Hello World C++ project
      (Теперь справа под Toolchains вы увидите MinGW GCC)
    • Выберите MinGW GCC из списка Toolchains
    • Хит Готово
  3. В своем проекте Hello World вы увидите папку + src и + Includes (если это так, то вам, вероятно, хорошо идти).

  4. Построить проект
  5. Запустить его!
0
Mercury