nanorobot 6 22 апреля, 2015 Опубликовано 22 апреля, 2015 (изменено) · Жалоба Хочется подсветки синтаксиса (препроцессора) в зависимости от значений макросов, передаваемых программе из Makefile директивой -D пока что оно либо не работает вовсе, либо с точностью до наоборот: фрагменты исходников, разрешенные макросом - затеняются, запрещенные - подсвечиваются Изменено 22 апреля, 2015 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 22 апреля, 2015 Опубликовано 22 апреля, 2015 · Жалоба Это не странное, этого все хотят:) Вот ссылка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 23 апреля, 2015 Опубликовано 23 апреля, 2015 (изменено) · Жалоба Благодарю. Чет пока не выходит. Изменено 23 апреля, 2015 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 23 апреля, 2015 Опубликовано 23 апреля, 2015 · Жалоба Чет пока не выходит.Что-то делаете неправильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 23 апреля, 2015 Опубликовано 23 апреля, 2015 · Жалоба Что-то делаете неправильно. Увы, есть проблемы с пониманием процесса. Проведение описанных по ссылке действий, вообще не привело к какому либо наблюдаемому результату. создал в проекте таргет discovery - кликнул, в итоге получил: make -j2 discovery -- discovery for g++ -E -P -v -dD '' process_begin: CreateProcess(NULL, g++ -E -P -v -dD "", ...) failed. make (e=2): Не удается найти указанный файл. make: *** [discovery] Error 2 видимо он считает что проект с плюсами закомментил: #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 кликнул по таргету discovery, получил make -j2 discovery -- discovery for arm-none-eabi-gcc arm-none-eabi-gcc -mcpu=cortex-m4 -O3 -ggdb -fomit-frame-pointer -falign-functions=16 -ffunction-sections -fdata-sections -fno-common -flto -Wall -Wextra -Wstrict-prototypes -Wa,-alms=build/lst/ -DCORTEX_VTOR_INIT=0x20000000 -DRTOS_NIL -DCORTEX_USE_FPU=FALSE -DTHUMB_PRESENT -mno-thumb-interwork -DTHUMB_NO_INTERWORKING -MD -MP -MF .dep/discovery.d -E -P -v -dD '' arm-none-eabi-gcc: error: : No such file or directory Using built-in specs. COLLECT_GCC=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,cortex-m7,armv7-r Thread model: single gcc version 4.9.3 20150303 (release) [ARM/embedded-4_9-branch revision 221220] (GNU Tools for ARM Embedded Processors) rm -f spec.d какой файл оно не находит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 23 апреля, 2015 Опубликовано 23 апреля, 2015 · Жалоба Во-первых, у вас в makefile не задана переменная CCX. Поэтому пишет "-- discovery for". Во-вторых, просто кликать по discovery неправильно, потому что эта цель ожидает параметров. Эту цель дёргает сама эклипса. Попробуйте после того, как всё настроите, перезапустить эклипсу, потом очистить собранные пути (Project->Properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers, выбрать "CDT GCC Built-in compiler settings", нажать "Clear entries". После этого всё должно переиндексироваться и появиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 23 апреля, 2015 Опубликовано 23 апреля, 2015 (изменено) · Жалоба После этого всё должно переиндексироваться и появиться. Ув. Антоха. Благодарю за помощь, в основном работает. Но есть некоторые неясности. Не могли бы Вы, проиллюстрировать один момент: В зависимости от значения некоторой переменной(макроса? тэга?) в Makefile, в сишном исходнике вызывать тот или иной хидер. ну, условно говоря, в си-исходнике: #ifdef RTOS_SCMRTOS #include"scmRtos.h" #endif #ifdef RTOS_FREERTOS #include"freeRtos.h" #endif или #if RTOS == SCM_RTOS #include"scmRtos.h" #elif RTOS == FREE_RTOS #include"freeRtos.h" #endif как будет выглядеть соответствующий фрагмент скрипта в Makefile. Мой вариант работает, но вот с корректной подсветкой/затемнением - проблема(оба вызова хидеров затенены) для первого варианта выше. ifeq ($(RTOS),) RTOS = SCM_RTOS endif ifeq ($(RTOS), SCM_RTOS) DDEFS += -DRTOS_SCMRTOS endif ifeq ($(RTOS), FREE_RTOS) DDEFS += -DRTOS_FREERTOS endif повторюсь, ситуация с хидерами - условна. Интересует сама механика. Изменено 23 апреля, 2015 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 23 апреля, 2015 Опубликовано 23 апреля, 2015 · Жалоба Да всё правильно у вас, я сам делаю точно так же. Вы не забываете передавать DDEFS компилятору в цели discovery? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 23 апреля, 2015 Опубликовано 23 апреля, 2015 (изменено) · Жалоба Да всё правильно у вас, я сам делаю точно так же. Вы не забываете передавать DDEFS компилятору в цели discovery? Не забываю. Но проблема с затенением/подсветкой имеет место. Оба вызова хидеров затенены. Но работает все как надо. ... в цели discovery? нет. это как? .... уже передаю. не помогает. и после index rebuild не помогает. Изменено 23 апреля, 2015 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 23 апреля, 2015 Опубликовано 23 апреля, 2015 · Жалоба .... уже передаю. не помогает. и после index rebuild не помогает. После изменения makefile надо заново запускать discovery, простая переиндексация не помогает: (Project->Properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers, выбрать "CDT GCC Built-in compiler settings", нажать "Clear entries". После этого всё должно переиндексироваться и появиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 23 апреля, 2015 Опубликовано 23 апреля, 2015 (изменено) · Жалоба После изменения makefile надо заново запускать discovery, простая переиндексация не помогает: перезапуск это наше все. Во всех случаях. Все равно. Речь только об достаточно узкой проблеме. все остальное ок. Правда оно тянет за собой все прочие ошибки парсинга, что весьма неприятно Изменено 23 апреля, 2015 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 24 апреля, 2015 Опубликовано 24 апреля, 2015 · Жалоба Благодарю Антоху и Сергея Борща за помощь. Индексация работает, да. Но собирает только пути тулчейна, абсолютные. Относительные пути внутри проекта не подхватываются(переменная INCDIR в Makefile, в цель Discovery передается). Макросы передаваемые программе директивой -D работают(влияют на компиляцию), как задумано. Но не подсвечиваются. Данная тема много раз поднималась на форуме, но не увидел, что бы кем то она была окончательно решена. Не там искал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 24 апреля, 2015 Опубликовано 24 апреля, 2015 · Жалоба Всё же вы что-то не так делаете. У меня всё работает. Посмотрите на мой makefile, может увидите какую-нибудь мелочь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 24 апреля, 2015 Опубликовано 24 апреля, 2015 · Жалоба Всё же вы что-то не так делаете. У меня всё работает. Посмотрите на мой makefile, может увидите какую-нибудь мелочь. Антоха, спасибо за помощь. По Вашему Makefile разобрался. причина - INCS := $(patsubst %, -I "%", $(INCDIR)). я скармливал просто INCDIR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 25 мая, 2015 Опубликовано 25 мая, 2015 · Жалоба Ещё один вопрос почти в тему. Eclipse Luna не понимает новомодную инициализацию структур struct AStruct { int a; int b; } AStruct = { .a = 1, .b = 2, }; Парсер такую конструкцию не ест. Компилятор понимает. Где у него галка?.. Что спросить у гугла, не придумал :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться