Текущий раздел:

Описания RDS

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.8. Настройки стандартного модуля автокомпиляции

§3.8.4. Символические имена параметров в настройках

# Описание пользователя

## Глава 3. Использование стандартных модулей автокомпиляции

### §3.8. Настройки стандартного модуля автокомпиляции

#### §3.8.4. Символические имена параметров в настройках

Описываются символические обозначения путей и параметров, которые можно использовать при задании настроек модуля автокомпиляции. Использование обозначений вместо самих значений параметров позволяет сделать настройки более гибкими: при изменении какого-либо параметра не нужно будет исправлять его значение во всех полях окна настроек, где он встречается.

Для того, чтобы вызвать компилятор и редактор связей, нужно передать операционной системе командную строку с указанием вызываемой программы (компилятора и редактора связей) с полным путем к этой программе и ее параметрами, указывающими, какой именно файл исходного текста необходимо обработать, в каких папках находятся библиотеки и файлы заголовков и т.п. Эта командная строка вводится в параметрах модуля автокомпиляции. В ней можно использовать специальные символические обозначения, вместо которых модуль подставит пути к различным папкам и файлам, заданным в настройках RDS и самого модуля. Использование таких обозначений гораздо удобнее ручного прописывания всей путей в командной строке.

Проиллюстрируем удобство символических обозначений на простом примере. При использовании компилятора Open Watcom C++ пути к файлам заголовков необходимо указывать в его командной строке в параметре «/i». В состав компилятора входит папка «h», внутри которой находятся необходимые заголовки. Кроме того, заголовки, которые нужно включить, находятся внутри этой папки «h» во вложенных папках «sys» и «nt». Пусть сам компилятор находится в папке «C:\Compilers\OpenWatcom». Если указывать все пути вручную, в командную строку придется добавить такой параметр:

      /i="C:\Compilers\OpenWatcom;C:\Compilers\OpenWatcom\sys;C:\Compilers\OpenWatcom\nt"

С использованием символических обозначений этот параметр будет значительно короче:

      /i="$INCLUDE$;$INCLUDE$\sys;$INCLUDE$\nt"

Разумеется, чтобы можно было использовать обозначение «$INCLUDE$», путь к папке заголовков должен быть задан на вкладке «компилятор».

Стандартный модуль автокомпиляции позволяет использовать следующие символические обозначения:

$AUXDIR$
  Полный путь к дополнительной папке, заданный в настройках модуля на вкладке «компилятор».
$BC$
  Полный путь к папке установки компилятора, заданный в настройках модуля, без символа обратной косой черты («\») в конце.
$COMP$
  Полный путь к исполняемому файлу компилятора, указанный в настройках модуля.
$CPPFILE$
  Имя исходного файла текста программы модели без пути с расширением «cpp». Этот файл автоматически формируется модулем, компилятор должен преобразовать его в объектный.
$DLLFILE$
  Имя скомпилированного файла DLL без пути. Этот файл создается редактором связей из объектного файла и необходимых библиотек.
$FILE$
  Имя исходного файла текста программы модели без пути и расширения. Этот файл автоматически формируется модулем.
$FUNC$
  Имя функции модели блока (всегда «rdsbcppBlockEntryPoint»).
$FUNCLC$
  Имя функции модели блока, приведенное к нижнему регистру (всегда «rdsbcppblockentrypoint»).
$FUNCUC$
  Имя функции модели блока, приведенное к верхнему регистру (всегда «RDSBCPPBLOCKENTRYPOINT»).
$INCLUDE$
  Полный путь к папке стандартных заголовков компилятора, указанной в настройках модуля, без символа обратной косой черты («\») в конце. Обычно файлы заголовков имеют расширения «h» и «hpp».
$LIB$
  Полный путь к папке стандартных библиотек компилятора, указанной в настройках модуля, без символа обратной косой черты («\») в конце. Обычно файлы библиотек имеют расширения «lib» и «obj».
$LINK$
  Полный путь к исполняемому файлу редактора связей, указанный в настройках модуля. Некоторые компиляторы способны сами вызывать редактор связей по окончании компиляции – в этом случае путь к редактору связей в настройках модуля может не указываться, и это символическое обозначение использовать нельзя.
$MODELDIR$
  Полный путь к папке, внутри которой размещается файл модели блока, без символа обратной косой черты («\») в конце. Файл модели имеет расширение «mdl», на его основе модуль автокомпиляции формирует текст программы, который затем передается компилятору.
$OBJFILE$
  Имя скомпилированного объектного файла без пути с расширением «obj». Этот файл создается компилятором и передается редактору связей для окончательной сборки DLL.
$POSTEXE$
  Полный путь к исполняемому файлу дополнительной программы, вызываемой после редактора связей, если этот путь задан в настройках модуля. Большинство компиляторов не требует никаких дополнительных программ, и этот путь задается редко.
$RDSINCLUDE$
  Полный путь к папке заголовков RDS, указанной в настройках RDS, без символа обратной косой черты («\») в конце. Эти заголовки необходимы для успешной компиляции моделей, поскольку в них описаны типы, структуры и классы, используемые модулем при автоматическом формировании текста программы модели.
$RDSTEMP$
  Полный путь к папке временных файлов, указанной в настройках RDS, без символа обратной косой черты («\») в конце. Именно в этой папке модуль автокомпиляции формирует временные файлы, включая файл с параметрами (response file), описанный ниже.
$RESPONSE$
  Имя файла с параметрами компилятора или редактора связей, если он используется. Многие компиляторы позволяют вместо указания всех параметров непосредственно в командной строке запуска записать их в текстовый файл (т.н. response file), а в командной строке указать только имя этого файла. При большом количестве параметров этот путь предпочтительнее, поскольку размер командной строки ограничен и его нельзя превышать. Настройки запуска компилятора и редактора связей (см. §3.8.6) позволяют организовать передачу параметров обоими способами.

Для пояснения работы описанных символических обозначений рассмотрим небольшой пример. Допустим, что мы используем модуль автокомпиляции, предназначенный для работы с компилятором Borland C++ 5.5. На вкладке «компилятор» окна настройки этого модуля заданы следующие пути (следует учитывать, что у модулей, рассчитанных на конкретные компиляторы, названия полей ввода на вкладке немного отличаются от универсальных, изображенных на рис. 492, хотя смысл их сохраняется):

- папка установки компилятора (папка Borland C++) – «C:\Program Files\bcpp55»;
- путь к компилятору – «$BC$\bin\bcc32.exe»;
- путь к редактору связей – «$BC$\bin\ilink32.exe»;
- папка заголовков (H-файлов) – «$BC$\Include»;
- папка библиотек – «$BC$\Lib».

Пусть RDS находится в папке «C:Rds», и в настройках RDS на вкладке «папки» указаны следующие пути:

- файлы заголовков – «$RDS$\Include\»;
- настройки – «$RDS$\»;
- временные файлы – «$INI$\Temp\».

Пусть теперь мы компилируем модель «model.mdl», находящуюся в папке «C:\User\Schemes\». При вызове компилятора символические обозначения, перечисленные выше, будут заменены на следующие значения:

Обозначение | Подставляемое значение
--- | ---
$AUXDIR$ | Нет (для Borland C++ 5.5 дополнительная папка не задается)
$BC$ | «C:\Program Files\bcpp55»
$COMP$ | «C:\Program Files\bcpp55\bin\bcc32.exe»
$CPPFILE$ | «model.cpp» (имя файла исходного текста формируется из имени файла модели заменой расширения на «cpp»)
$DLLFILE$ | «model.dll32» (Borland C++ 5.5 – тридцатидвухбитный компилятор)
$FILE$ | «model»
$FUNC$ | «rdsbcppBlockEntryPoint» (этот имя жестко встроено в модуль автокомпиляции)
$FUNCLC$ | «rdsbcppblockentrypoint»
$FUNCUC$ | «RDSBCPPBLOCKENTRYPOINT»
$INCLUDE$ | «C:\Program Files\bcpp55\Include»
$LIB$ | «C:\Program Files\bcpp55\Lib»
$LINK$ | «C:\Program Files\bcpp55\bin\ilink32.exe»
$MODELDIR$ | «C:\User\Schemes»
$OBJFILE$ | «model.obj»
$POSTEXE$ | Нет (для Borland C++ 5.5 дополнительная программа не задается)
$RDSINCLUDE$ | «C:\Rds\Include»
$RDSTEMP$ | «C:\Rds\Temp»
$RESPONSE$ | «response.txt» (это имя жестко встроено в модуль автокомпиляции)

Из таблицы видно, что вместо символических обозначений всегда подставляются полностью развернутые значения. Вместо обозначения «$COMP$», например, подставится не строка «$BC$\bin\bcc32.exe», указанная в настройках в качестве пути к компилятору, а, поскольку «$BC$» тоже является обозначением, строка «C:\Program Files\bcpp55\bin\bcc32.exe». Точно так же путь к папке временных файлов RDS, обозначаемый «$RDSTEMP$», будет развернут до полного пути «C:\Rds\Temp», несмотря на то, что в настройках RDS он указан со специфическим для RDS обозначением «$INI$». Полный список символических обозначений стандартных папок RDS, отличающихся от обозначений модуля автокомпиляции, рассматриваемых здесь, приводится в А.5.4.9 приложений.

Для вызова компилятора в настройках модуля, работающего с Borland C++ 5.5, используется следующая строка:

      "$COMP$" @"$RDSTEMP$\$RESPONSE$"

При этом для файла параметров (response file) задан такой текст:

      -I"$INCLUDE$;$INCLUDE$\sys"
      -I"$RDSINCLUDE$"
      -I"$MODELDIR$"
      -O2 -Vx -Ve -X- -a8 -k- -vi -tWD -tWM -c -w-inl -w-aus -q
      "$CPPFILE$"

С учетом описанных выше подстановок, в Windows для вызова компилятора будет передана строка

      "C:\Program Files\bcpp55\bin\bcc32.exe" @"C:\Rds\Temp\response.txt"

В файл параметров «response.txt» в папке «C:\Rds\Temp» модуль запишет следующий текст:

      -I"C:\Program Files\bcpp55\Include;C:\Program Files\bcpp55\Include\sys"
      -I"C:\Rds\Include"
      -I"C:\User\Schemes"
      -O2 -Vx -Ve -X- -a8 -k- -vi -tWD -tWM -c -w-inl -w-aus -q
      "model.cpp"

В этой командой строке и этом файле параметров указаны полные пути ко всем папкам и конкретные имена файлов, которые компилятор сможет обработать.