2013-03-11 1 views
2

Теперь я использую Firebreath для разработки моего плагина, и у меня возникла проблема с использованием предустановленной Firebreath configure_template.Может ли firebreath предустановленной функции configure_template поддерживать @ONLY?

Насколько я понял, configure_template заменит переменные, на которые ссылаются как $ {VAR}, или @ VAR @ или @@ foreach.

но мой файл конфигурации (файл установки nsis) имеет свои собственные переменные как $ {VAR}, поэтому я не хочу, чтобы он был заменен на configure_template.

Причина, по которой я использую предварительно сконфигурированный configure_template Firebreath вместо файла configure_file (outputfile outputfile @ONLY), заключается в том, что я хочу использовать цикл @@ foreach в файле конфигурации для интерпретации переменной с точкой с запятой CMAKE.

Итак, как мне решить эту проблему? Могу ли я легко изменить существующий файл configure_template, чтобы игнорировать $ {VAR}, или есть альтернативные способы интерпретации переменной с запятой CMAKE в моем файле конфигурации?

ответ

1

Я просто выясню одно решение самостоятельно.

Существующая функция configure_template, предоставляемая Firebreath, может быть изменена, чтобы игнорировать переменные-заменители, такие как $ {VAR}. Модификация проста, что только одна строка, Измените следующий код

string(CONFIGURE "${line}" line ESCAPE_QUOTES) 

в

string(CONFIGURE "${line}" line ESCAPE_QUOTES @ONLY) 

Параметр @ONLY покажет Cmake только заменить переменные, такие как @ @ VAR.

Хотя это может решить проблему настройки моего собственного файла, но это сломает файл конфигурации Firebreath, так как все они используют $ {VAR}.

Итак, мое окончательное решение

  1. Копия configure_template.cmake в Firebreath в из, переименовать и изменить.
  2. Используйте измененную версию my_configure_template для выполнения моих целей, и это не повлияет на существующее поведение configure_template.

Любые другие решения приветствуются.