Eclipse + CDT + Cygwin: Как исправить ошибку «Несколько целей»? - PullRequest
5 голосов
/ 15 ноября 2010

ОБНОВЛЕНИЕ 1: мой оригинальный пост был слишком длинным и скрыл реальную проблему.Я точно обнаружил, что вызывает ошибку «Несколько целей» при вызове Make.

ОБНОВЛЕНИЕ 2: Я обнаружил, что эта ошибка «Несколько целей» вызвана GNU Make версии 3.8.1 (см. здесь1 и здесь2 ).GNU Make 3.8.1 - это текущая версия GNU Make, выпущенная с Cygwin.Подводя итог ссылке: Старый v3.8.0 прекрасно обрабатывал пути Windows, а более новый v3.8.1 сообщает об ошибках для путей Windows (может быть, это пассивный агрессивный джеб из FSF?).


Когда вы начинаетеновый проект в Eclipse + CDT + Cygwin без внешних включений / библиотек, у меня все отлично работает.

Как только я пытаюсь использовать внешние включаемые / библиотеки, я получаю ошибку "Несколько целей".

Вот точные шаги, необходимые для воспроизведения ошибки в Windows + Eclipse + CDT + Cygwin:

  1. Свойства проекта проекта -> Сборка C / C ++ -> Настройки -> Настройки инструмента -> Cygwin C Compiler -> Включает -> Включить пути (-I) -> Кнопка Добавить -> Каталог выбора -> "C: \ dir1 \ dir2"
  2. Iнажмите build.
  3. Он собирается без ошибок в первый раз.
  4. Я снова нажимаю build ... Я получаю ошибки сборки "Несколько целей. Стоп.".
  5. Я нажимаю на ошибку.

Eclipse запускает make-файл.Ошибка происходит, когда make видит путь Windows для нового файла включения из внешней библиотеки:

# NOTE: Error happens when the first "C:/" occurs
src/main.d src/main.o: ../src/main.c C:/dir1/dir2/ExternalLibrary.h

Причина, по которой Make получает ошибку «Multiple target», заключается в том, что она видит «:», являющееся частьюсинтаксиса Make для объявления цели.Когда есть два «:», выведите ошибки, потому что он не знает, что делать с «несколькими целями».


Я не могу редактировать make-файлы вручную, потому что они немедленно восстанавливаютсяи перезаписано [ОБНОВЛЕНИЕ: Eclipse-CDT].Учитывая, что я не могу вручную редактировать make-файл.

  1. Есть ли способ для Eclipse НЕ использовать путь "C: \"?или сказать make, чтобы игнорировать путь "C: \"?
  2. Это ошибка Eclipse + CDT + Cygwin?
  3. Если вы используетеЗатмение + CDT + Cygwin ... пожалуйста, помогите (я не хочу использовать Visual Studios ...)!Может я неправильно использую Eclipse + CDT + cygwin?Как ВЫ включаете в работу Внешнюю библиотеку?

* Очень сильно разочарованы *

Пытаетесь оставаться открытым исходным кодом и пересекаетесь-платформенный пользователь,

Trevor

Ответы [ 3 ]

3 голосов
/ 16 ноября 2010

Оказывается, что проблема "нескольких целей" вызвана текущей версией GNU Make, установленной из Cygwin. GNU Make 3.8.1 - это текущая версия GNU Make, выпущенная с Cygwin.

GNU Make 3.8.1 не обрабатывает пути Windows, содержащие «C: \». Таким образом, каждый раз, когда ваш make-файл имеет путь Windows с «C: \», вы получаете ошибку сборки «несколько целей».

Решение, которое я в итоге сделал, это загрузить исправленную версию GNU Make v3.8.1. См. Здесь1 или Здесь2 . Затем Eclipse + CDT + Cygwin снова заработал нормально.

Обновление (05-Фев-2015): С обновленным cygwin и новым Make (4.0.x) проблема исчезнет. https://superuser.com/questions/154418/where-do-i-get-make-for-cygwin

0 голосов
/ 31 октября 2014

У меня все еще есть та же проблема с eclipse / CDT Juno после обновления cygwin

, чтобы исправить это:

вам нужно сделать 3.80-1 или старше, а для этого нужна cygintl-2.dll.скачать make3.80-1 из

http://www.filewatcher.com/m/make-3.80-1.tar.bz2.286814-0.html

и необходимый Dll из

http://www.dllguru.com/cygintl-2.dll.html извлечь его куда-нибудь

переименуйте вашу make в cygwin / bin в makeVersion, например, make3.82.90

скопируйте cygintl-2.dll и сделайте в cygwin / bin

попробуйте собрать ваш проект в eclipse дважды, проблема должна бытьисчезли

герди

0 голосов
/ 07 декабря 2011

Была и такая проблема.Проблема была в том, что я включил пути в настройках проекта.Тогда у меня были абсолютные пути.При включении путей в настройки папки с относительными путями все работало нормально.

...