Перейти к содержанию
    

Вопросы по Eclipse, CDT, Zylin embedded CDT

Давайте напишу чуть подробнее, потому что штука весьма полезная.

Идём в Project - Properties, находим там C/C++ Build / Discovery options.

В Discovery profile выбираем "GCC per project scanner".

В появившемся снизу поле "Compiler invocation command" пишем arm-kgp-eabi-gcc (или arm-none-eabi-gcc в случае CodeSourcery).

Всё. Давим OK, и у нас в "Project Explore" образуется куча инклюдов. Осталось обновить индекс (ПКМ на имени проекта - Index - Rebuild), и порядок, наш эклипс знает, что такое uint32_t :).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AHTOXA

Спасибо.

Думаю многим эта инфа пригодится: прописывыть всё что Эклипса подхватила - зто ад.

 

В Discovery profile выбираем "GCC per project scanner".

Кстати возможны варианты.

post-17322-1335990624_thumb.jpg

Пока выбрал "GCC per project scanner".

Результат крайне положительный: появились не только типы из stdint, но и функции из core_cm3.h.

И по типам из scmRTOS также появилась подсказка.

 

Осталось прописать тип проца? Задать в Symbols STM32F10X_MD.

Или он тоже автоматом из makefile прочитается?

 

 

Ещё вопрос. Как правильно переносить проект с одного компа на другой?

Можно ли папку копировать и потом через импорт открывать?

Или всё же надо Export в zip, потом Import из zip-а. Версия Eclipse подразумевается такая же.

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё вопрос. Как правильно переносить проект с одного компа на другой?

Можно ли папку копировать и потом через импорт открывать?

Или всё же надо Export в zip, потом Import из zip-а. Версия Eclipse подразумевается такая же.

Нашёл такой вариант: Import-Select archive file.

Есть другие варианты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осталось прописать тип проца? Задать в Symbols STM32F10X_MD.

Или он тоже автоматом из makefile прочитается?

Нет, настолько она еще не продвинута. В строке Compiler invocation arguments добавить в начало -mmcu=cortex-cm3 -mthumb -DSTM32F10X_MD

 

Нашёл такой вариант: Import-Select archive file.

Есть другие варианты?

Я просто копирую проект и на новом месте делаю Import->General->Existing projects into workspace.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, настолько она еще не продвинута. В строке Compiler invocation arguments добавить в начало -mmcu=cortex-cm3 -mthumb -DSTM32F10X_MD

попробую...

я задавал в С/С++ General\ Symbols

 

Я просто копирую проект и на новом месте делаю Import->General->Existing projects into workspace.

Делал импорт через Existing code as Makefile project.

Попробовал через Existing projects into workspace - результат лучше. Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, настолько она еще не продвинута. В строке Compiler invocation arguments добавить в начало -mmcu=cortex-cm3 -mthumb -DSTM32F10X_MD

 

Чтобы ключи компиляции импортировались из make, эклипсу в этом окошке надо указать вызывать не не компилятор, а собственно make. Ну и makefile допилить соответственно - добавить цель вроде discover и ключики для нее подходящие.

 

Я такое проделал для Scons-а, теперь у меня все ключи компиляции тянутся из sconstruct-файла. Для make не пробовал, но думаю непреодолимых сложностей не предвидится.

 

Помимо ключей оттуда потянутся и пути к инклюдам - для меня это особенно актуально - у меня их много.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы ключи компиляции импортировались из make, эклипсу в этом окошке надо указать вызывать не не компилятор, а собственно make. Ну и makefile допилить соответственно - добавить цель вроде discover и ключики для нее подходящие.
Ха, интересная мысль, спасибо. Надо попробовать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вчера попробовал - с наскока не получилось. Причём помню, что раньше вроде делал, а сейчас - не вышло. Глубоко копать не стал, потому что не использую автоматическое обнаружение - от него проекты перестают быть портабельными (обнаруживаются абсолютные пути, а у меня они разные дома и на работе).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

потому что не использую автоматическое обнаружение - от него проекты перестают быть портабельными (обнаруживаются абсолютные пути, а у меня они разные дома и на работе).
У меня тоже пути разные, обнаружение использую и проекты перемещаемы. Что я делаю не так? ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я вчера попробовал - с наскока не получилось. Причём помню, что раньше вроде делал, а сейчас - не вышло. Глубоко копать не стал, потому что не использую автоматическое обнаружение - от него проекты перестают быть портабельными (обнаруживаются абсолютные пути, а у меня они разные дома и на работе).

 

Странно это. В случае, если путь автоопределяются, то эклипс автоматически после каждого билда удаляет старые и добавляет новые. Так что по идее после переноса проекта достаточно сделать ребилд и пути заменятся на новые...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... эклипс автоматически после каждого билда удаляет старые и добавляет новые. Так что по идее после переноса проекта достаточно сделать ребилд и пути заменятся на новые...

Автоматически только новые добавляются. Чтобы удалить старые (а точнее - все по умолчанию, т. е. не пользовательские) надо нажать кнопку Clear в окне Discovery Options.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё вопросы.

Нет ли каких-нибудь плагинов к Eclipse, увеличавающих ее функциональность?

Не хватает следующего:

Запоминание буфера обмена на 5-10 элементов.

Автоподсказки по акронимам.

 

И еще что хотелось бы поменять:

 

1) контекстное меню как-нибудь подредактировать - слишком оно перегружено.

2) выделение слов по Ctrl+Shift+стрелка - чтобы выделялось слово сразу целиком, а не почастяи - неудобно.

3) автоподсказчик иногда выбора не предлагает - сразу делает подстановку. Иногда это не нужно.

 

Можно что-нибудь из этого сделать?

Спасибо.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чтобы ключи компиляции импортировались из make, эклипсу в этом окошке надо указать вызывать не не компилятор, а собственно make. Ну и makefile допилить соответственно - добавить цель вроде discover и ключики для нее подходящие.

 

Я вчера попробовал - с наскока не получилось.

Разобрался. Действительно удобно. Буду переводить все проекты на такую систему. Тоже с наскока не получилось. Проблема была в передачи пути к specs-файлу. Привожу рецепт, возможно пригодится еще кому-то.

 

1) создаем в makefile цель discovery:

#discovery target for Eclipse parser
.PHONY: discovery
discovery:
    $(CC) $(INCLUDES) $(CFLAGS) -E -P -v -dD '$(specs_file)'

если в CFLAGS есть правило для генерации файлов (.dep или .lst) - его надо вынести из CFLAGS в отдельный, скажем, DEPFLAGS и вставить в нужные места, где оно использовалось. Также полезно отключить чтение зависимостей при выполнении этой цели (занимает много времени на больших проектах):

ifeq (,$(findstring clean,$(MAKECMDGOALS)))
  ifeq (,$(findstring cleanall,$(MAKECMDGOALS)))
    ifeq (,$(findstring discovery,$(MAKECMDGOALS)))
-include $(shell mkdir $(DEPDIR) 2>/dev/null) $(wildcard $(DEPDIR)/*.d)
    endif
  endif
endif

 

Теперь в Eclipse, в Project->Propertities->C/C++ Build->Discovery Options выбираем:

  • Discovery profiles scope: 'Configuration-wide'
  • Automated discovery of paths and symbols, Discovery profile: 'GCC per project info profile'
  • Discovery profile options, ставим галочки:

    • 'Enable build output scanner info discovery'
    • 'Enable generate scanner info command'
  • В строку 'Compiler invocation command' вписываем: make
  • В строку 'Compiler invocation arguments' вписываем: specs_file=${plugin_state_location}/${specs_file} discovery
Жмем Automated discovery of paths and symbols -> Clear, OK, запускаем компиляцию проекта.

 

исправлено: заключил в апострофы '$specs_file', поскольку путь может быть с пробелами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запоминание буфера обмена на 5-10 элементов.

это умеет пунто-свитчер, причем для системного буфера, а не только внутри эклипса

 

3) автоподсказчик иногда выбора не предлагает - сразу делает подстановку. Иногда это не нужно.

preferences\c/c++\editor\context assist - тут с галками поиграйтесь

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...