реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Eclipse Makefile project дефайны в мейкфайле, ifdef и индексация кода, Код за ifdef не индексируется и этих дефайнов эклипс не видит
abutorin
сообщение Jan 3 2014, 19:41
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-09-12
Пользователь №: 73 374



Цитата(mdmitry @ Jan 3 2014, 01:04) *
Цель discovery является целью только для Eclipse. Eclipse получает информацию о путях для заголовочных файлов и всех объявленных define. Результат работы влияет на навигацию по проекту и подсветку синтаксиса. Вполне логично, что цель строится при изменении исходных кодов проекта. У себя не замечал частых вызовов.

Это я понял. Когда эклипс вызывает эту команду? При изменении файлов исходного кода этого не происходит. Сейчас заметил что при сборке проекта тоже не происходит. Хочется заставить эклипс это делать автоматом.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jan 3 2014, 20:55
Сообщение #32


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(abutorin @ Jan 3 2014, 23:41) *
Когда эклипс вызывает эту команду? При изменении файлов исходного кода этого не происходит. Сейчас заметил что при сборке проекта тоже не происходит. Хочется заставить эклипс это делать автоматом.

Первый запуск будет после заполнения настроек в Eclipse для цели discovery. Clear Entries, Apply вызывает перестроение зависимостей.
Для постоянного вызова можно включить discovery в цель all, но зачем это?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
abutorin
сообщение Jan 3 2014, 20:58
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-09-12
Пользователь №: 73 374



Цитата(mdmitry @ Jan 4 2014, 00:55) *
Первый запуск будет после заполнения настроек в Eclipse для цели discovery. Clear Entries, Apply вызывает перестроение зависимостей.
Для постоянного вызова можно включить discovery в цель all, но зачем это?

После внесения изменений каких либо дефайнов в исходниках эклипс этого не замечает. И продолжает ругаться что где-то, что-то не определено, хотя сборка происходит корректно.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jan 3 2014, 21:10
Сообщение #34


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(abutorin @ Jan 4 2014, 00:58) *
После внесения изменений каких либо дефайнов в исходниках эклипс этого не замечает. И продолжает ругаться что где-то, что-то не определено, хотя сборка происходит корректно.

сейчас проверил на тестовом проекте. Изменил специально один define для условной компиляции. После пересборки подсвечиваются необходимые ветки условной компиляции.
Как Вы настраиваете Eclipse и какой Makefile?


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
abutorin
сообщение Jan 3 2014, 21:24
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-09-12
Пользователь №: 73 374



Цитата(mdmitry @ Jan 4 2014, 01:10) *
сейчас проверил на тестовом проекте. Изменил специально один define для условной компиляции. После пересборки подсвечиваются необходимые ветки условной компиляции.
Как Вы настраиваете Eclipse и какой Makefile?


Настраивал как вы рекомендовали в этой ветке.
В разделе C/C++ Generel->Preprocessor Include/Providers
галка CDTGCC Built-in Compiler Settings
команда make specs_file=${INPUTS} discovery
галка Allocate console in the concole view

Остальные галки сняты
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jan 4 2014, 10:30
Сообщение #36


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Во вкладке Providers у меня отмечены некоторые настройки:

CDT User Setting Entries
CDT Managed Build Setting Entries [Shared]
CDT GCC Build Output Parser

Настройки там не менялись.

В Makefile изменения идеалогически правильно делать как указал IgorKossak.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 5 2014, 00:29
Сообщение #37


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Я понял, что на вкладке Providers достаточно оставить только CDT GCC Build-in compiler settings без галки "Use global provider shared between projects" (с ней эклипс пытается выполнить команду черт знает в какой директории и не находит там нужного makefile). CDT GCC Build Output Parser добавляет установки (директории заголовочных файлов, по умолчанию предопределенные символы и т.д.) от системного компилятора, которые абсолютно не нужны при кросс-компиляции.

Если память не изменяет, цель discovery вызывается не только после build, но еще и при принудительной переиндексации проекта (Project->C/C++ Index -> Rebuild).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
abutorin
сообщение Jan 5 2014, 07:02
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-09-12
Пользователь №: 73 374



Цитата(Сергей Борщ @ Jan 5 2014, 04:29) *
Если память не изменяет, цель discovery вызывается не только после build, но еще и при принудительной переиндексации проекта (Project->C/C++ Index -> Rebuild).


Никак не пойму. Она у меня только вызывается при изменении настроек. При ребилде не вызывается. При переиндексации тоже.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 5 2014, 13:59
Сообщение #39


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Window->Preferences->C/C++->Indexer
+ Automatically update the index
+ Update index immediately after every file-save

Цитата(Сергей Борщ @ Jan 5 2014, 02:29) *

Всё абсолютно верно.
Go to the top of the page
 
+Quote Post
abutorin
сообщение Jan 5 2014, 19:29
Сообщение #40


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 3-09-12
Пользователь №: 73 374



Цитата(IgorKossak @ Jan 5 2014, 17:59) *
Window->Preferences->C/C++->Indexer
+ Automatically update the index
+ Update index immediately after every file-save


Похоже часть проблемы была в компе. Попробовал на другой машине все указанные настройки. Ручная переиндексация работает, обновление при пересборке работает. Но автоматическое обновление при сохранении файла не работает.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jan 5 2014, 19:41
Сообщение #41


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Сергей Борщ @ Jan 5 2014, 04:29) *
CDT GCC Build Output Parser добавляет установки (директории заголовочных файлов, по умолчанию предопределенные символы и т.д.) от системного компилятора, которые абсолютно не нужны при кросс-компиляции.

У меня выбран, но при просмотре найденных путей и define нет ничего от системного компилятора (mingw32-gcc), под linux не проверял. Позже посмотрю. А если не влият, то и не надо лишних действий, и можно отключить.

Цитата
Window->Preferences->C/C++->Indexer
+ Automatically update the index
+ Update index immediately after every file-save

Так это вроде как по умолчанию выбрано.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 14 2014, 15:56
Сообщение #42


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я тут наконец-то дозрел до перехода на Luna. Вспомнил про эту тему, проштудировал.
Давайте я для потомков подытожу:

Настройка обнаружения дефайнов в Eclipse Kepler и более поздних

Project->Properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers:
  • Снимаем все прички в списке "Providers";
  • Ставим причку на "CDT GCC Built-in compiler settings";
  • В настройках этого провайдера:
    • снимаем птичку "Use global provider shared between projects";
    • в строке "Command to get compiler specs" прописываем:
      Код
      make extension="${EXT}" specs_file="${INPUTS}" discovery
  • В makefile создаём цель для дисковеринга:
    Код
    #  specs_file has extension "C" for C++ and "c" for C.
    discovery:
    ifeq ($(extension),c)
        @echo -- discovery for $(CC)
        $(CC) $(INCS) $(CFLAGS) -E -P -v -dD '$(specs_file)'
    else
        @echo -- discovery for $(CCX)
        $(CXX) $(INCS) $(CXXFLAGS) -E -P -v -dD '$(specs_file)'
    endif
        $(RM) spec.d

  • Если вдруг индексация не выполняется при изменении файлов проекта, зайти в
    Window->Preferences->C/C++->Indexer
    и проверить установку следующих птичек :
    • Automatically update the index
    • Update index immediately after every file-save


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Nov 14 2014, 20:36
Сообщение #43


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



По поводу индексации Антоха сказал всё правильно, но этого бывает не достаточно. Например, после изменения пути к тулчейну, изменения дефайнов в мейкфайле, и т. д.
Для обновления состояния проекта надо ещё провести "редискаверинг" - в настройках провайдера CDT GCC Built-in compiler settings нажать кнопку Clear Entries, потом Apply и наконец OK.
Go to the top of the page
 
+Quote Post
Aaron
сообщение Nov 28 2014, 05:59
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



Оу, спасибо! Наконец-то индексация в Luna заработала адекватно )))
Go to the top of the page
 
+Quote Post
swisst
сообщение Jan 8 2015, 21:32
Сообщение #45


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Цитата(AHTOXA @ Nov 14 2014, 17:56) *
Я тут наконец-то дозрел до перехода на Luna. Вспомнил про эту тему, проштудировал.
Давайте я для потомков подытожу:


можно увидеть Ваш вывод в консоль при вызове Index->Rebuild ?

не могу добиться стабильности на Luna - во первых команда Index->Rebuild ничего на консоль не выводит, манипуляция Properties->Providers->Clear Entries->Apply(OK) работает через раз (на консоль выводит, entries обновляет, завершается, правда, цель discovery с ошибкой) - перезапуск среды помогает.

Код
23:12:08 **** Running scanner discovery: CDT GCC Built-in Compiler Settings ****
make extension=C specs_file=D:/Prog/EclipseWS/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C discovery
COMSPEC detected C:\Windows\system32\cmd.exe
SHELL is C:/Windows/system32/cmd.exe, REMOVE_CMD is cs-rm
-- discovery for "C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4\bin"\arm-none-eabi-gcc
"C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4\bin"\arm-none-eabi-gcc "C:/Program Files (x86)/GNU Tools ARM Embedded/4.9 2014q4/arm-none-eabi/include" . ./cmsis  -ggdb -Os -mcpu=cortex-m0 -mthumb-interwork   -DVECT_TAB_FLASH -DFLASH_RUN -DLPC1114 -DLPC1114_TK -I. -I./cmsis -I. -ffunction-sections -fdata-sections -Wall -Wextra -Wcast-align -Wpointer-arith -Wredundant-decls -Wshadow -Wcast-qual -Wcast-align -Wa,-adhlns= -E -P -v -dD 'D:/Prog/EclipseWS/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C'
arm-none-eabi-gcc: error: 'D:/Prog/EclipseWS/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C': Invalid argument
Using built-in specs.
COLLECT_GCC=C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4\bin\arm-none-eabi-gcc
Target: arm-none-eabi
Configured with: /home/build/work/GCC-4-9-build/src/gcc/configure --build=i686-linux-gnu --host=i686-w64-mingw32 --target=arm-none-eabi --prefix=/home/build/work/GCC-4-9-build/install-mingw --libexecdir=/home/build/work/GCC-4-9-build/install-mingw/lib --infodir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/info --mandir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/man --htmldir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/html --pdfdir=/home/build/work/GCC-4-9-build/install-mingw/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-headers=yes --with-newlib --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/home/build/work/GCC-4-9-build/install-mingw/arm-none-eabi --with-libiconv-prefix=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-gmp=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpfr=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-mpc=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-isl=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-cloog=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-libelf=/home/build/work/GCC-4-9-build/build-mingw/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Tools for ARM Embedded Processors' --with-multilib-list=armv6-m,armv7-m,armv7e-m,armv7-r
Thread model: single
gcc version 4.9.3 20141119 (release) [ARM/embedded-4_9-branch revision 218278] (GNU Tools for ARM Embedded Processors)
make: *** [discovery] Error 1

23:12:08 Build Finished (took 187ms)

Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 16:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016