Новый проектный шаблон Eclipse CDT - Как добавить библиотеку - PullRequest
4 голосов
/ 15 июля 2011

В Eclipse CDT Indigo есть новая функция, которая позволяет добавлять новые проекты шаблонов C / C ++ в мастер новых проектов. Я понял, как сделать это успешно до определенного момента. Я могу создать базовый проект, который зависит только от простых исходных файлов, но теперь я хотел бы создать проект CPPUnit, к которому я хотел бы автоматически добавить библиотеку CPPUnit. Что касается жизни, я не могу понять, как этого достичь. Кто-нибудь знает как?

Ответы [ 2 ]

5 голосов
/ 12 ноября 2012

Извините, я опоздал, но у меня был тот же вопрос по той же проблеме.Я нашел решение.Это работает для меня, но я хорошо знаю, что это, вероятно, не так широко, как хотелось бы.В ваш template.xml вы можете добавить следующий процесс:

<process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues">
    <simple name="projectName" value= "$(projectName)"/>      
    <complex-array name="resourcePaths">
        <element>
            <simple name="id" value="gnu.cpp.link.option.libs" />
            <simple-array name="values">
                <element value="dl" />
                <element value="cppunit" />
            </simple-array>
            <simple name="path" value="" />
        </element>
    </complex-array>
</process>

Важнейшая часть - это знать, куда поместить две библиотеки dl и cppunit.Ключ gnu.cpp.link.option.libs является правильным для цепочки инструментов компилятора GNU, которая активна на большинстве компьютеров Linux.

Я извлек имя ключа из плагина Eclipse org.eclipse.cdt.managedbuilder.gnu.ui_XXXXXXX.Вы можете найти его в папке Eclipse plugins.Если вам нужен ключ для другого набора инструментов, я рекомендую открыть файл plugin.xml.Здесь вы должны искать атрибут valueType="libs".Соответствующий id - это ключ, которым вы должны манипулировать в файле процесса.

Если вам также нужно манипулировать путем поиска в библиотеке, найдите valueType="libPaths".Это приведет вас к ключу gnu.cpp.link.option.paths.Вы можете добавить дополнительные записи в список с помощью процесса, аналогичного показанному выше.

4 голосов
/ 02 марта 2014

Это ИЗУМИТЕЛЬНО как тяжело найти этот материал. В дополнение к просмотру plugin.xml все шаблоны обеспечивают эффективную реализацию следующих параметров:

Ссылка на источник

Шаблоны для просмотра

  • Плагины / org.eclipse.cdt.managedbuilder.gnu.ui_X.X.X.xxxxx.jar / шаблоны / projecttemplates /

    • и затем в каждом каталоге проекта (например, ' HeloWorldCAnsiProject ') найдите template.xml

Параметры GNU C для просмотра

  • плагины / org.eclipse.cdt.managedbuilder.gnu.ui_X.X.X.xxxxx.jar / plugin.xml

Пример реализации путем обратного инжиниринга

Цель - установить 'Cross GCC Compiler' -> Оптимизация -> 'Другие флаги оптимизации'

  1. создать фиктивный проект C без настроек
  2. открытые свойства. установите целевое поле вручную. Я установил «Другие флаги оптимизации» на «COME_FIND_ME»

    enter image description here

  3. открыть файл .cproject в редакторе. поиск COME_FIND_ME. вот что я нашел:

    <option id="gnu.c.compiler.option.optimization.flags.1380831355" superClass="gnu.c.compiler.option.optimization.flags" value="COME_FIND_ME" valueType="string"/>
    
    • тогда он имеет тип 'string' и 'id' gnu.c.compiler.option.optimization.flags.

    enter image description here

  4. Найдите в файле plugin.xml, указанном выше, «gnu.c.compiler.option.optimization.flags». Вот что я нашел (в строке 1120):

      <option
          name="%Option.Posix.Optimize.Flags"
          category="gnu.c.compiler.category.optimization"
          id="gnu.c.compiler.option.optimization.flags"
          valueType="string">
      </option>
    

    enter image description here

  5. Выйдите из этого примера проекта и вернитесь в файл template.xml, в который вы хотите добавить это. мы хотим добавить здесь значение по умолчанию, поэтому давайте сделаем это. добавить:

    <process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue">
        <simple name="projectName" value="$(projectName)" />
    
        <complex-array name="resourcePaths">
            <element>
                <simple name="id" value="gnu.c.compiler.option.optimization.flags" />
                <simple name="value" value="-Omg_eclipse" />
                <simple name="path" value="" />
            </element>
        </complex-array>
    </process>
    

и все.

Полезные ссылки

  1. Справка - Eclipse Platform - Как зарегистрировать шаблон проекта с помощью CDT
  2. Справка - Eclipse Platform - Пример шаблона

Примечания

Здесь находятся функции добавления / установки MBS:

  • org.eclipse.cdt.managedbuilder.core.source_X.X.X.xxxxx.jar / орг / затмение / CDT / managedbuilder / templateengine / процессы

enter image description here

Пример полного файла шаблона

наконец, вот фрагмент кода, который может сэкономить вам часы поиска в Интернете. Этот template.xml создает новый проект, копируя файл main.c и устанавливая три параметра сборки.

<?xml version="1.0" encoding="ISO-8859-1"?>
<template type="ProjTempl" version="1.0" supplier="stack_overflow" revision="1.0" author="Justin Reina"
    id="EXE" label="My C Project" description="set some stuff."help="help.html">

   <process type="org.eclipse.cdt.core.CreateSourceFolder">
        <simple name="projectName" value="$(projectName)"/>
        <simple name="path" value="bsp"/>
    </process>

    <process type="org.eclipse.cdt.core.AddFiles">  
        <simple name="projectName" value="$(projectName)"/>     
        <complex-array name="files">    
            <element>
                <simple name="source"      value = "main.c"/>
                <simple name="target"      value = "main.c"/>
                <simple name="replaceable" value = "true"  />
            </element>
        </complex-array>
    </process>

    <process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringListOptionValues">
        <simple name="projectName" value= "$(projectName)"/>      
        <complex-array name="resourcePaths">
            <element>
                <simple name="id" value="gnu.c.link.option.libs" />
                <simple-array name="values">
                    <element value="corestuff" />
                    <element value="utilstuff" />
                </simple-array>
                <simple name="path" value="" />
            </element>
        </complex-array>
    </process>

    <process type="org.eclipse.cdt.managedbuilder.core.AppendToMBSStringOptionValue">
        <simple name="projectName" value="$(projectName)" />

        <complex-array name="resourcePaths">
            <element>
                <simple name="id" value="gnu.c.compiler.option.optimization.flags" />
                <simple name="value" value="-Omg_eclipse" />
                <simple name="path" value="" />
            </element>
        </complex-array>
    </process>

    <process type="org.eclipse.cdt.managedbuilder.core.SetMBSBooleanOptionValue">
        <simple name="projectName" value="$(projectName)" />

        <complex-array name="resourcePaths">
            <element>
                <simple name="id" value="gnu.c.link.option.nostdlibs" />
                <simple name="value" value="true" />
                <simple name="path" value="" />
            </element>
        </complex-array>
    </process>
</template>

В Фонд Затмения; в следующий раз я могу просто заплатить вам половину зарплаты, чтобы вы дали мне эту информацию ???

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...