Импортировать активные символы препроцессора из файла в Eclipse CDT - PullRequest
4 голосов
/ 07 августа 2009

Я использую Eclipse CDT для проекта C с пользовательскими make-файлами, и я хочу использовать подсветку неактивного кода, как предложено в ответах на вопрос 739230 . Автоматическое обнаружение активных / определенных символов не работает для моих make-файлов. Вместо этого я создал текстовый файл для каждой цели сборки со списком активных символов.

Итак, мои вопросы:

  1. Как загрузить эти настройки в проект, не обращаясь к графическому интерфейсу (свойства папки -> Пути и символы -> Символы)?
  2. А как мне выбрать, к какой цели конфигурации / сборки будут добавлены символы?

Непосредственное редактирование файла .cproject и добавление строк следующим образом:

<listOptionValue builtIn="false" value="HIRES_OUTPUT"/>

Но только если я пройду через графический интерфейс, чтобы создать первый ключ для каждой цели сборки. Я бы предпочел создать цель сборки и импортировать символы за одну операцию.

Написание плагина Eclipse с нуля кажется излишним для этой задачи.

Есть идеи, как сделать это умнее?

Ответы [ 2 ]

3 голосов
/ 08 сентября 2009

Мастер импорта / экспорта может обрабатывать определения символов. Используйте File-> Import и выберите C / C ++ Project Settings.

Формат XML, необходимый для мастера импорта, можно создать из текстового файла активных символов с помощью небольшого одноразового скрипта.

Я использовал следующий скрипт на Python:

#
#       Tool to import a list of defined symbols into Eclipse IDE for code highlighting.
#
#       Takes a _cdef.txt file (generated during library build) and converts to an XML file
#       suitable for import into Eclipse
#       Use stdin and stdout for input and output.

import sys
import string

header = [
'<?xml version="1.0" encoding="UTF-8"?>',
'<cdtprojectproperties>'
,
'<section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.Macros">',
'<language name="holder for library settings">',
'',
'</language>',
'<language name="GNU C++">',
'',
'</language>',
'<language name="GNU C">',
''
]

sys.stdout.write (string.join(header, '\n'))


text=sys.stdin.readlines()
tokens = string.split(string.strip(text[0]),',')
for curtok in tokens:
    lines = ['<macro>',
    '<name>' + string.strip(curtok) + '</name><value></value>',
    '</macro>', '']
    sys.stdout.write(string.join(lines, '\n'))

footer = [
'',
'</language>',
'<language name="Assembly">',
'',
'</language>',
'</section>',
'</cdtprojectproperties>',
'']
sys.stdout.write (string.join(footer, '\n'))

Входными данными для сценария является текстовый файл с разделенными запятыми активными символами, все в первой строке.

0 голосов
/ 27 марта 2017

Другой способ - использовать настройки проекта XML и добавить туда все необходимые макросы. Вы можете создать базовый XML-файл с помощью

Щелкните правой кнопкой мыши на Project -> Перейти к свойствам -> C / C ++ General -> Path and Symbol и на вкладке Symbol добавьте некоторый препроцессор для GNU C или GNU C ++ и экспортируйте эти настройки в виде файла, используя ссылку «Export Setting» в нижней части окна. Затем вручную отредактируйте XML-файл для новых макросов и выполните импорт, используя кнопку «Настройки импорта» в представленной выше опции.

Используйте сохраненный файл в качестве шаблона для всех других проектов и импортируйте его один раз во время создания проекта.

...