2015-10-21 2 views
2

Я пытаюсь создать шаблон нового проекта для Eclipse CDT, чтобы ответить на мой вопрос here. @Jonah Graham предоставил очень подробный проход в своем ответе на 1, и это доставило мне большую часть пути.Шаблон проекта Eclipse CDT - настройка раскрывающихся параметров

Однако я не могу понять, как установить параметр, который указан в раскрывающемся списке; например Диалог/Язык Стандарт - ISO C++11 (-std=c++01) на вкладке «Настройки/Настройки инструмента»/«Компилятор/Диалоговое окно GCC C++». Та же проблема возникла бы, если бы я хотел изменить оптимизации по умолчанию или уровни отладки и т.д.

я думал, возможно, это может быть достигнуто через что-то вроде

<process 
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringListOptionValues"> 
    <simple name="projectName" value="$(projectName)" /> 
    <complex-array name="resourcePaths"> 
     <element> 
      <simple name="id" value=".*cpp\.compiler\.option\.dialect\.std." /> 
      <simple-array name="values"> 
       <element value="gnu.cpp.compiler.dialect.c++11" /> 
      </simple-array> 
      <simple name="path" value="" /> 
     </element> 
    </complex-array> 
</process> 

К сожалению, это, кажется, не имеют какой-либо эффект (никаких ошибок, но ничего в результирующем файле .cproject).

Я могу обойти это, установив флаг «Другой диалект», который является просто строкой, но я хотел бы знать, как это сделать, выпадающим списком, поскольку они появляются в других местах.

ответ

3

Способ использования этой опции - рассматривать ее как строку и внутренности с изменением значения строки на значение перечисления. Я тестировал его с C99 (т.е. не C++), для которого я использовал это:

<!-- Set -std=c99 by selecting the enum in the settings --> 
<process 
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue"> 
    <simple name="projectName" value="$(projectName)" /> 
    <complex-array name="resourcePaths"> 
     <element> 
      <simple name="id" value=".*compiler\.option\.dialect\.std.*" /> 
      <simple name="value" value="ISO C99 (-std=c99)" /> 
      <simple name="path" value="" /> 
     </element> 
    </complex-array> 
</process> 

Так что для вашего решения я ожидаю, что это будет работать. Обратите внимание, что значение то, что отображается для пользователя:

<process 
    type="org.eclipse.cdt.managedbuilder.core.SetMBSStringOptionValue"> 
    <simple name="projectName" value="$(projectName)" /> 
    <complex-array name="resourcePaths"> 
     <element> 
      <simple name="id" value=".*cpp\.compiler\.option\.dialect\.std." /> 
      <simple name="value" value="gnu.cpp.compiler.dialect.c++11" /> 
      <simple name="path" value="" /> 
     </element> 
    </complex-array> 
</process> 

По сравнению с вашей версией, я изменил тип процесса и весь name="value" элемент (от simple-arraysimple до плюс внутреннее имя для отображения имени).

+1

Я обновил https://github.com/jonahkichwacoders/example_cdt_template, чтобы включить эту настройку, если это поможет. –

+0

Это не работает для меня - я ничего не понимаю. Я скопировал вышеуказанное и дважды проверил, что это значение отображается в раскрывающемся списке. Я также попробовал это, используя значение «gnu.cpp.compiler.dialect.C++ 11», что и сохраняется в проекте .cproject, но ни один из них не работает для меня. – sfjac

+0

К сожалению, я забираю это обратно. То, что я делал выше, не сработало, но когда я изменил то, что вы рекомендовали использовать «gnu.cpp.compiler.dialect.C++ 11», он сработал. – sfjac

Смежные вопросы