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

 
 
> Хочется странного, Подсветка синтаксиса в Eclipse
nanorobot
сообщение Apr 22 2015, 15:34
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Хочется подсветки синтаксиса (препроцессора) в зависимости от значений макросов, передаваемых программе из Makefile директивой -D
пока что оно либо не работает вовсе, либо с точностью до наоборот: фрагменты исходников, разрешенные макросом - затеняются, запрещенные - подсвечиваются

Сообщение отредактировал nanorobot - Apr 22 2015, 16:45
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Apr 22 2015, 18:37
Сообщение #2


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

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



Это не странное, этого все хотятsm.gif Вот ссылка.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Apr 23 2015, 03:48
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Благодарю. Чет пока не выходит.



Сообщение отредактировал nanorobot - Apr 23 2015, 06:28
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 23 2015, 04:44
Сообщение #4


Гуру
******

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



Цитата(nanorobot @ Apr 23 2015, 06:48) *
Чет пока не выходит.
Что-то делаете неправильно. Прикрепленное изображение


--------------------
На любой вопрос даю любой ответ
"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
nanorobot
сообщение Apr 23 2015, 06:28
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(Сергей Борщ @ Apr 23 2015, 09:44) *
Что-то делаете неправильно. Прикрепленное изображение



Увы, есть проблемы с пониманием процесса. Проведение описанных по ссылке действий, вообще не привело к какому либо наблюдаемому результату.
создал в проекте таргет 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


какой файл оно не находит?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 23 2015, 09:26
Сообщение #6


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

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



Во-первых, у вас в makefile не задана переменная CCX. Поэтому пишет "-- discovery for".
Во-вторых, просто кликать по discovery неправильно, потому что эта цель ожидает параметров. Эту цель дёргает сама эклипса.

Попробуйте после того, как всё настроите, перезапустить эклипсу, потом очистить собранные пути
(Project->Properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers, выбрать "CDT GCC Built-in compiler settings", нажать "Clear entries".
После этого всё должно переиндексироваться и появиться.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Apr 23 2015, 10:21
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(AHTOXA @ Apr 23 2015, 14:26) *
После этого всё должно переиндексироваться и появиться.


Ув. Антоха. Благодарю за помощь, в основном работает. Но есть некоторые неясности. Не могли бы Вы, проиллюстрировать один момент:

В зависимости от значения некоторой переменной(макроса? тэга?) в 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


повторюсь, ситуация с хидерами - условна. Интересует сама механика.

Сообщение отредактировал nanorobot - Apr 23 2015, 10:41
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- nanorobot   Хочется странного   Apr 22 2015, 15:34
|- - AHTOXA   Да всё правильно у вас, я сам делаю точно так же. ...   Apr 23 2015, 10:46
|- - nanorobot   Цитата(AHTOXA @ Apr 23 2015, 15:46) Да вс...   Apr 23 2015, 11:12
- - Сергей Борщ   Цитата(nanorobot @ Apr 23 2015, 14:12) .....   Apr 23 2015, 12:01
|- - nanorobot   Цитата(Сергей Борщ @ Apr 23 2015, 17:01) ...   Apr 23 2015, 12:15
|- - nanorobot   Благодарю Антоху и Сергея Борща за помощь. Индекса...   Apr 24 2015, 05:01
|- - AHTOXA   Всё же вы что-то не так делаете. У меня всё работа...   Apr 24 2015, 06:10
|- - nanorobot   Цитата(AHTOXA @ Apr 24 2015, 11:10) Всё ж...   Apr 24 2015, 09:49
- - esaulenka   Ещё один вопрос почти в тему. Eclipse Luna не пон...   May 25 2015, 07:12
- - Genadi Zawidowski   Designated Initializers https://bugs.eclipse.org/b...   Jun 3 2015, 06:38


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:57
Рейтинг@Mail.ru


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