将文件中的活动预处理器符号导入 Eclipse CDT

Jak*_*ron 5 c eclipse-cdt c-preprocessor

我将 Eclipse CDT 用于带有自定义 makefile 的 C 项目,并且我想使用问题739230的答案中建议的非活动代码突出显示。活动/定义符号的自动发现对我的 makefile 不起作用。相反,我为列出活动符号的每个构建目标创建了一个文本文件。

所以我的问题是:

  1. 如何在不通过 GUI(文件夹属性 -> 路径和符号 -> 符号)的情况下将这些设置加载到项目中?
  2. 以及如何选择将符号添加到哪个配置/构建目标?

直接编辑 .cproject 文件并添加如下行:

<listOptionValue builtIn="false" value="HIRES_OUTPUT"/>
Run Code Online (Sandbox Code Playgroud)

但前提是我通过 GUI 为每个构建目标创建第一个密钥。我更愿意在一次操作中创建构建目标并导入符号。

从头开始编写 Eclipse 插件对于这项任务来说似乎有点过分。

有没有更聪明的方法来做到这一点?

Jak*_*ron 3

导入/导出向导可以处理符号定义。使用“文件”->“导入”并选择“C/C++ 项目设置”。

导入向导所需的 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'))
Run Code Online (Sandbox Code Playgroud)

脚本的输入是一个文本文件,其中包含以逗号分隔的活动符号,全部位于第一行。