|
Eclipse Makefile project дефайны в мейкфайле, ifdef и индексация кода, Код за ifdef не индексируется и этих дефайнов эклипс не видит |
|
|
|
Oct 9 2013, 10:10
|
Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182

|
Есть кусок кода Код #if SOME_VAR void func(void); #else SOME_VAR определена в каком-то хэдэре, который виден эклиспу, но по каким-то причинам он не видит этот дефайн и соответственно весь код под ifdef становится ему не виден. Это страшно неудобно т.к. очень привык Ctrl+click на функции и попадать к её определению. А если она определена под таким блоком ifdef, то эклипс её не видит и приходится мучится с поиском. Пути к инклюдам эклипс видит (дописал их в path and symbols, по ктрл+клику находит инклюды). Там же в symbols дописал эти дефайны - не помогло. Подскажите как бороться с этим?
--------------------
typedef enum { no, yes, maybe } bool; | блог тут
|
|
|
|
|
 |
Ответов
(1 - 46)
|
Oct 9 2013, 10:55
|
Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182

|
Цитата(сарматъ @ Oct 9 2013, 13:36)  попробовать сделать переиндексацию Неа, и настройки индексера менял (включал "index unused headers"). Не прокатывает
--------------------
typedef enum { no, yes, maybe } bool; | блог тут
|
|
|
|
|
Oct 9 2013, 11:14
|

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

|
Цитата(Cosmojam @ Oct 9 2013, 16:10)  Подскажите как бороться с этим? Смотрите вот здесь. (Это касаемо заголовка топика, про дефайны в makefile).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Oct 9 2013, 11:45
|

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

|
QUOTE (AHTOXA @ Oct 9 2013, 14:14)  Смотрите вот здесь. (Это касаемо заголовка топика, про дефайны в makefile). Да, удобная была штука. А вот в Eclipse kepler у меня пропала напрочь. Выкусили?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 9 2013, 14:17
|

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

|
Цитата(Сергей Борщ @ Oct 9 2013, 15:45)  Да, удобная была штука. А вот в Eclipse kepler у меня пропала напрочь. Выкусили? Использую так: Eclipse Kepler SR1 Project->Properties->C/C++ General->Preprocessor Include Paths, Macros etc.->Providers: CDT GCC Built-in compiler Settings [checked] Use providers shared between projects [ unchecked] Allocate console in the Console View [checked] в командной строке: make specs_file=${INPUTS} discovery в Makefile Код .PHONY: discovery discovery: ifeq ($(CXX_PROJECT),YES) $(CXX) $(INCS) $(ALL_CXXFLAGS) -E -P -v -dD '$(specs_file)' else $(CC) $(INCS) $(ALL_CFLAGS) -E -P -v -dD '$(specs_file)' endif $(REMOVE) spec.d Замеченные неудобства: из Makefile глобальные дефайны задаваемые в командной строке компилятора (-DSOMENAME) не распознаются. Проблем, описанных здесь не заметил.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Oct 9 2013, 17:56
|
Местный
  
Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182

|
Цитата(AHTOXA @ Oct 9 2013, 14:14)  Смотрите вот здесь. (Это касаемо заголовка топика, про дефайны в makefile). О, спасибо, пол-беды решено. А вот с дейфайнами внутри хидеров какие-то глюки индексера видимо. Некоторые нормально видит, некоторые - нет.
--------------------
typedef enum { no, yes, maybe } bool; | блог тут
|
|
|
|
|
Oct 10 2013, 18:14
|

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

|
QUOTE (IgorKossak @ Oct 10 2013, 20:25)  В версии Luna обещали удалить вообще, но пока ещё наблюдаю. Раз новый вариант мы с помощью mdmitry освоили, можно его смело забыть.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 11 2013, 05:21
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
хых... расскажите какую проблему вы тут решаете? что то я не могу уловить разницы что с этими опциями CODE CDT GCC Built-in compiler Settings [checked] Use providers shared between projects [unchecked] Allocate console in the Console View [checked] в командной строке: make specs_file=${INPUTS} discovery собираю что с теми что по умолчанию... если вставляю это в майкфайл CODE ifeq ($(CXX_PROJECT),YES) $(CXX) $(INCS) $(ALL_CXXFLAGS) -E -P -v -dD '$(specs_file)' else $(CC) $(INCS) $(ALL_CFLAGS) -E -P -v -dD '$(specs_file)' endif $(REMOVE) spec.d вообще не собирается пишет ошибку что какого то разделителя не хватает...
Сообщение отредактировал сарматъ - Oct 11 2013, 05:22
|
|
|
|
|
Oct 11 2013, 07:37
|

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

|
QUOTE (сарматъ @ Oct 11 2013, 08:21)  расскажите какую проблему вы тут решаете? что то я не могу уловить разницы Как бы проще объяснить - в makefile задаются некие глобальные опции проекта: 1) компилятор и, следовательно, пути к его библиотечным заголовочным файлам. 2) сторонние библиотеки и, следовательно, пути поиска их заголовочных файлов. 3) Тип процессора, который может определять некие define, по которым в некоторых файлах (и заголовчных, и исходного кода) могут включаться какие-либо участки либо подключаться те или иные другие заголовочные файлы. 4) просто какие-то глобальные на весть проект #define вроде NDEBUG Вот чтобы эклипса могла все это учитывать, правильно раскрашивать исходники и правильно осуществлять навигацию по ним, обо всех этих параметрах надо ей правильно сообщить. Можно тупо их набивать на соответствующих вкладках вручную. Но во-первых это нудно, а во-вторых при любом изменении придется править как минимум в двух местах - в makefile и на одной/нескольких вкладках Эклипсы. Это муторно и не наш метод. В эклипсе реализован автоматический механизм: она вызывает компилятор, пытками  заставляет его выдать в stdout все #define и пути, после чего анализирует и усваивает вывод. Вот чтобы компилятор выдал все что нужно с учетом наших установок в makefile мы и просим Эклипсу вызывать не голый писишный компилятор ${COMMAND} -E -P -v -dD "${INPUTS}", а определенный в нашем makefile компилятор со всеми необходимыми для нашего проекта опциями. И делаем мы это заставляя make достичь цель discovery. QUOTE (сарматъ @ Oct 11 2013, 08:21)  вообще не собирается пишет ошибку что какого то разделителя не хватает... Там в начале строк табуляторы должны стоять, а не пробелы. А перед этим куском должна стоять цель discovery: В общем у меня так: CODE #discovery target for Eclipse parser .PHONY: discovery discovery: $(CC) $(INCLUDES) $(CFLAGS) -E -P -v -dD '$(specs_file)' P.S. чуть-чуть отшлифовал текст.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 11 2013, 07:40
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
понял, спасибо, буду пробовать может там еще слова волшебные какие шепнуть надо? у меня как был этот блок серым так и остался( CODE #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ RCC->CR |= (uint32_t)0x00000001; RCC->CFGR = 0x00000000; RCC->CR &= (uint32_t)0xFEF6FFFF; #endif
Сообщение отредактировал сарматъ - Oct 11 2013, 08:58
|
|
|
|
|
Oct 11 2013, 10:23
|

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

|
CODE .PHONY: discovery discovery: 1)ifeq ($(CXX_PROJECT),YES) 2) $(CXX) $(INCS) $(ALL_CXXFLAGS) -E -P -v -dD '$(specs_file)' 3)else 4) $(CC) $(INCS) $(ALL_CFLAGS) -E -P -v -dD '$(specs_file)' 5)endif 6) $(REMOVE) spec.d
Надеялся, что по мнемоникам не будет вопросов.  Кратко прокомментирую. Свой Makefile пытался сделать максимально универсальным. Можно использовать и другие названия (`GNUmakefile', `makefile', и `Makefile'), понимая разницу между ними. В начале Makefile есть определение типа проекта: С (CXX_PROJECT=NO) или С++ (CXX_PROJECT=YES). В строке 1) проверяется тип проекта. Если С++ проект, то выполняется строка 2), в противном случае строка 4) (С проект). $(CXX) соответствующий компилятор g++ (например, arm-none-eabi-g++), $(CC) - gcc (arm-none-eabi-gcc). $(INCS) полный список каталогов для поиска заголовочных файлов, исключая каталоги самого компилятора. $(ALL_CXXFLAGS) - ключи (опции) для g++, $(ALL_CFLAGS) - для gcc. Они различаются, так как не все опции совпадают и могут быть применены (например, gnu99 для gcc). Строка 6) удаление ненужного служебного файла зависимостей spec.d, созданного в результате запуска компилятора. Командная строка: Код make specs_file=${INPUTS} discovery вызов утилиты make для достижения цели discovery для файла specs_file, название которого определяется встроенной в Eclipse переменной ${INPUTS}.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Oct 11 2013, 11:40
|

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

|
Цитата(сарматъ @ Oct 11 2013, 14:36)  а если в проекте и с и с++? И ещё *.S для полноты. Правила компиляции файлов Вы сами задаете в Makefile. Например, для *.S Код # Assemble: create object files from assembler source files. $(OBJDIR)/%.o : %.S $(BUILDONCHANGE) @echo $(MSG_ASSEMBLING) $< ifeq ($(CXX_PROJECT),YES) $(ASXX) -c $(ALL_ASFLAGS) -o $@ $< else $(AS) -c $(ALL_ASFLAGS) -o $@ $< endif где ASXX = $(CROSS_TOOLS)gcc -x assembler-with-cpp AS = $(CROSS_TOOLS)gcc $(CROSS_TOOLS) - префикс или полный путь (arm-none-eabi- или /opt/GNU_ARM/4.7_2013q3/bin/arm-none-eabi-) В зависимости от Ваших целей и задач можете сделать и для с-файлов что-нибудь подобное, НО осторожно с опциями компиляции (допустимые). Есть в сети хороший перевод документации по утилите make.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Oct 11 2013, 11:54
|

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

|
Цитата(сарматъ @ Oct 11 2013, 15:47)  ну с компиляцией то ладно - у меня чужой мейк файл и там сделано что он все нормально компилирует и собирает, я про то чему должно быть равно CXX_PROJECT=? чтобы в проекте где есть и си и с++ дефайны бы попадали в эклипс? CXX_PROJECT=YES. Иначе не соберётся проект. Проекты с scmRTOS имеют все файлы (*.cpp, *.c, в зависимости от порта могут быть и *.S). Можете глянуть Makefile в портах для GCC. Они достаточно минималистичны и понятны. ADD: в этом случае (CXX_PROJECT=YES) у Вас и Код #ifdef __cplusplus extern "C" { #endif
#ifdef __cplusplus } #endif правильно подсвечивается.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Oct 11 2013, 12:08
|
Частый гость
 
Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463

|
да как раз эта ос у меня используется, сейчас ваш вариант попробую, спасибо хых... ну вот получилось появилась консоль дополнительная в ней видно что дефайны появились CODE #define STM32F40XX 1 #define USE_STDPERIPH_DRIVER 1 #define VER_MAJOR 0 #define VER_MINOR 1 #define HSE_VALUE 8000000 но вот эта дрянь все равно в эклипсе серая... CODE #if !defined (STM32F4XX) && !defined (STM32F40XX) && !defined (STM32F427X) /* #define STM32F40XX */ /*!< STM32F40xx/41xx Devices */ /* #define STM32F427X */ /*!< STM32F427x/437x Devices*/ #endif может еще что подкрутить надо? ой.. тут как раз все сработало это я стормозил... не срабатывает в core_cm4.h блок CODE #if defined (__VFP_FP__) && !defined(__SOFTFP__) #if (__FPU_PRESENT == 1) #define __FPU_USED 1 #else #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" #define __FPU_USED 0 #endif остается серым, хотя #define __VFP_FP__ 1 и не определена __SOFTFP__
Сообщение отредактировал сарматъ - Oct 12 2013, 09:51
|
|
|
|
|
Dec 17 2013, 13:49
|

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

|
Слегка помучившись, после некоторых экспериментов и углублённого изучения документации Eclipse, пришёл к следующему: 1. запускать дискаверинг после анализа CXX_PROJECT не верно, т. к. сама суть дискаверинга состоит в определении путей, дефайнов и прочего в зависимости от языка, которых в смешанном проекте может быть (в нашем случае) 1 или 2, а не в зависимости от некоего дефайна, определённого на весь проект. 2. изменил настройки проекта и makefile следующим образом: Код make extension="${EXT}" specs_file="${INPUTS}" discovery Код discovery: ifeq ($(extension),C) @echo -- discovery for $(CXX) $(CXX) $(INCS) $(CXXFLAGS) -E -P -v -dD '$(specs_file)' else @echo -- discovery for $(CC) $(CC) $(INCS) $(CFLAGS) -E -P -v -dD '$(specs_file)' endif $(RM) spec.d
|
|
|
|
|
Dec 17 2013, 14:22
|

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

|
Цитата(IgorKossak @ Dec 17 2013, 18:49)  Код make extension="${EXT}" specs_file="${INPUTS}" discovery Код discovery: ifeq ($(extension),C) @echo -- discovery for $(CXX) $(CXX) $(INCS) $(CXXFLAGS) -E -P -v -dD '$(specs_file)' else @echo -- discovery for $(CC) $(CC) $(INCS) $(CFLAGS) -E -P -v -dD '$(specs_file)' endif $(RM) spec.d IgorKossak, проверка именно вначале на С? Ведь далее идет запуск для CXX. Учитывая, что расширения файлов для C++ не стандартизованы (cc, cpp) может делать сначала проверку на файл С, а все что не подходит считать файлом C++.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Dec 17 2013, 14:39
|

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

|
Цитата(IgorKossak @ Dec 17 2013, 18:34)  specs_file имеет расширение C для C++ и c для C. Если со временем не изменят расширение, то все хорошо. Для С невероятно, что поменяют. Спасибо. У себя буду переделывать, наверно, в таком виде: Код discovery: ifeq ($(extension),с) @echo -- discovery for $(CС) $(CC) $(INCS) $(ALL_CFLAGS) -E -P -v -dD '$(specs_file)' else @echo -- discovery for $(CXX) $(CXX) $(INCS) $(ALL_CXXFLAGS) -E -P -v -dD '$(specs_file)' endif $(REMOVE) spec.d
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Dec 17 2013, 14:54
|

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

|
Цитата(mdmitry @ Dec 17 2013, 16:39)  Если со временем не изменят расширение, то все хорошо. Да вроде бы давно уже так. Кстати, в мейкфайл надо бы комментарий на эту тему добавить, чтобы со временем не запутаться. Цитата(mdmitry @ Dec 17 2013, 16:39)  Если со временем не изменят расширение, то все хорошо. Для С невероятно, что поменяют. Смотря какая вожжа под хвост попадёт. Могут поменять расширения на C и CPP  И в этом случае у Вас всё порушится. Так что без пространного комментария в мейкфайле не обойтись.
|
|
|
|
|
Dec 31 2013, 10:08
|
Участник

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

|
Добрый день. Задам наверное глупый вопрос. Но я не совсем понял когда Eclipse вызывает make с целью discover? При ребилде он у меня это делает а можно ли как-то заставить делать это в фоновом режиме?
|
|
|
|
|
Jan 3 2014, 19:41
|
Участник

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

|
Цитата(mdmitry @ Jan 3 2014, 01:04)  Цель discovery является целью только для Eclipse. Eclipse получает информацию о путях для заголовочных файлов и всех объявленных define. Результат работы влияет на навигацию по проекту и подсветку синтаксиса. Вполне логично, что цель строится при изменении исходных кодов проекта. У себя не замечал частых вызовов. Это я понял. Когда эклипс вызывает эту команду? При изменении файлов исходного кода этого не происходит. Сейчас заметил что при сборке проекта тоже не происходит. Хочется заставить эклипс это делать автоматом.
|
|
|
|
|
Jan 3 2014, 20:58
|
Участник

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

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

Группа: Участник
Сообщений: 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 Остальные галки сняты
|
|
|
|
|
Jan 5 2014, 07:02
|
Участник

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

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

Шаман
     
Группа: Модераторы
Сообщений: 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)  Всё абсолютно верно.
|
|
|
|
|
Jan 5 2014, 19:29
|
Участник

Группа: Участник
Сообщений: 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 Похоже часть проблемы была в компе. Попробовал на другой машине все указанные настройки. Ручная переиндексация работает, обновление при пересборке работает. Но автоматическое обновление при сохранении файла не работает.
|
|
|
|
|
Jan 5 2014, 19: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 Так это вроде как по умолчанию выбрано.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Jan 8 2015, 21:32
|
Частый гость
 
Группа: Свой
Сообщений: 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)
|
|
|
|
|
May 15 2015, 09:13
|

В поисках истины
  
Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923

|
Прошу прощения что встреваю  А тоже самое возможно с sdcc? Ключи подобные у компилятора есть. makefile я доработал примерно следующей строкой Код discovery: @echo Discovery $(extension) sdcc -I"C:\Program Files\SDCC\include" -E -dD "$(specs_file)" @echo ' ' но даже если у меня получается заставить Eclipse выполнить male .... discovery, то в консоль он ругается что нет такой цели для сборки discovery. Настройках проекта отключена генерация makefile и судя по всему он пользуется моим при сборке all или clear. Но вот discovery не хочет делать. Руками вызвать make получается. Как это? Я не совсем допонимаю механизм работы этого всего. Что должно быть в результате? Как с этим связан spec.C файл?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|