Я сделал плагин Eclipse, который был в порядке, используя Eclipse Kepler:
Require-Bundle: org.eclipse.cdt.managedbuilder.core;bundle-version="8. 0.2"
,org.eclipse.core.runtime;bundle-version="3.7.0"
,org.eclipse.cdt.managedbuilder.ui;bundle-version="8.0.2"
,org.eclipse.core.resources;bundle-version="3.7.101"
,org.eclipse.cdt;bundle-version="8.0.2"
,org.eclipse.cdt.core;bundle-version="5.3.2"
Его целью является создание пользовательского набора инструментов для компиляции файлов ARM C.
С этим набором инструментов у меня есть шаблон, который копирует исходный файл для создания простого проекта ARM.
Теперь мне нужно использовать последнюю версию Eclipse (по крайней мере, Oxygen).
Кажется, мой шаблон читается CDT, потому что я вижу его ярлык при открытии мастера нового проекта.
Но когда я создаю проект, мой шаблон никогда не выполняется.
Это мой plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ?eclipse version="3.4"? -->
<plugin>
<extension point="org.eclipse.cdt.managedbuilder.core.buildDefinitions">
<projectType
buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe"
id="com.company.product.buildDefinitions.projectType"
isAbstract="false"
name="product Project"
projectEnvironmentSupplier="com.company.product.build.ExampleEnvironmentVariableSupplier">
<configuration
id="productManagedBuilder.configuration"
name="BUILD">
<toolChain
id="com.company.product.buildDefinitions.toolChain"
isAbstract="false"
name="product Toolchain"
targetTool="com.company.product.buildDefinitions.createflash">
<builder
buildRunner="com.company.product.build.ExampleBuildRunner"
id="productManagedBuilder.builder"
isAbstract="false"
isVariableCaseSensitive="false"
name="product Builder"
superClass="org.eclipse.cdt.build.core.internal.builder"
>
<!-- attribut qui marche pour le builder en paralelle :
parallelBuildOn="true"
parallelizationNumber="4"-->
</builder>
<tool
command="gcc"
commandLinePattern="${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}"
id="com.company.product.buildDefinitions.compiler"
isAbstract="false"
name="Compiler"
natureFilter="both"
outputFlag="-o">
<optionCategory
id="com.company.product.compiler.optionCategory"
name="Option">
</optionCategory>
<option
category="com.company.product.compiler.optionCategory"
defaultValue="-c -g -Wall -fno-common -O2 -mcpu=cortex-m3 -mthumb -mthumb-interwork"
id="com.company.product.compiler.option.other.otherflags"
name="Other flags"
valueType="string">
</option>
<option
browseType="directory"
category="com.company.product.compiler.optionCategory"
command="-I"
id="com.company.product.compiler.option.include.paths"
name="Include paths (-I)"
valueType="includePath">
<listOptionValue
builtIn="false"
value="../">
</listOptionValue>
</option>
<inputType
dependencyCalculator="org.eclipse.cdt.managedbuilder.makegen.gnu.DefaultGCCDependencyCalculator"
dependencyContentType="org.eclipse.cdt.core.cHeader"
dependencyExtensions="h"
id="com.company.product.buildDefinitions.compiler.inputType"
sourceContentType=" org.eclipse.cdt.core.cSource"
sources="c">
</inputType>
<outputType
buildVariable="OBJS"
id="com.company.product.buildDefinitions.compiler.outputType"
outputs="o">
</outputType>
<envVarBuildPath
pathType="buildpathInclude"
variableList="INCLUDE_PATH">
</envVarBuildPath>
</tool>
<tool
command="gcc"
commandLinePattern="${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}"
id="com.company.product.buildDefinitions.linker"
isAbstract="false"
name="Linker"
natureFilter="cnature"
outputFlag="-o">
<optionCategory
id="com.company.product.linker.optionCategory"
name="Option">
</optionCategory>
<option
category="com.company.product.linker.optionCategory"
defaultValue="-Wall -nostartfiles -mcpu=cortex-m3 -mthumb -mthumb-interwork -T../Example.ld"
id="com.company.product.buildDefinitions.linker.otherflags"
name="Other flags"
valueType="string">
</option>
<option
browseType="none"
category="com.company.product.linker.optionCategory"
command="-l"
id="com.company.product.buildDefinitions.linker.libs"
name="Libraries (-l)"
valueType="libs">
</option>
<option
browseType="directory"
category="com.company.product.linker.optionCategory"
command="-L"
id="com.company.product.buildDefinitions.linker.paths"
name="Library search path (-L)"
valueType="libPaths">
</option>
<inputType
buildVariable="OBJS"
id="com.company.product.buildDefinitions.linker.inputType"
multipleOfType="true"
sourceContentType="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"
sources="o">
</inputType>
<outputType
buildVariable="ELF"
id="com.company.product.buildDefinitions.linker.outputType"
outputNames="${BuildArtifactFileBaseName}.elf"
outputs="elf">
</outputType>
</tool>
<tool
command="objcopy"
commandLinePattern="${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}${COMMAND} ${BuildArtifactFileBaseName}.elf -O binary ${BuildArtifactFileBaseName}.bin "
id="com.company.product.buildDefinitions.createflash"
isAbstract="false"
name="Flash binary builder (bin)">
<inputType
buildVariable="ELF"
id="com.company.product.buildDefinitions.createflash.inputType"
sources="elf">
</inputType>
</tool>
</toolChain>
</configuration>
</projectType>
</extension>
<extension
point="org.eclipse.cdt.core.templateProcessTypes">
<processType
name="CopyFolders"
processRunner="com.company.product.build.CopyFolders">
<simple
name="projectName">
</simple>
<simple
name="folder">
</simple>
</processType>
</extension>
<extension
point="org.eclipse.cdt.core.templates">
<template
id="com.company.product.build.CopyFolders"
location="templates/ExampleBase/template.xml"
projectType="com.company.product.buildDefinitions.projectType">
</template>
</extension>
<extension
point="org.eclipse.cdt.core.templateAssociations">
<template
id="com.company.product.build.CopyFolders">
<toolChain
id="com.company.product.buildDefinitions.toolChain">
</toolChain>
</template>
</extension>
</plugin>
Кажется, что моя точка расширения org.eclipse.cdt.core.templates с атрибутом projectType = "com.company.product.buildDefinitions.projectType" не работает с моей точкой расширения org.eclipse.cdt.managedbuilder.core. buildDefinitions, тег projectType, имеющий атрибут id = "com.company.product.buildDefinitions.projectType" при создании проекта.
Я пробовал много вещей после прочтения современной документации о шаблонах и чтения исходного кода cdt.autotools / cdt.build.crossgcc, но ничего не помогло.
Это ошибка CDT, я что-то упустил?
Спасибо за помощь.