|
Навигация
|
Описание файла проекта
Файл проекта предназначен для описания собираемой программы компилятору и линковщику. Здесь составляетмя список используемых программой модулей, перечисляются диррективы для условной компиляции, имя создаваемого файла, точка входа в программу и другие опции. Файл проекта пишется в простом текстовом формате и может быть сотавлен, например, в стандартном блокноте Windows. В файле проекта предусмотрено использование комментариев. Формат описания: (*
Многострочный комментарий *) // Однострочный комментарий, комментирует до конца строки Простейший файл проекта может выглядеть так: Project SampleProject;
; end. Ключевое слово Project обозначает начало описания, end. обозначает конец. В промежутке между этими ключевыми словами описываются диррективы. В данном случае единственная дирректива ; (пустая дирректива). Используемые в програме модули так же описываются в файле проекта. Описание модулей начинается с ключевого слова modules после которого следует список псевдонимов и путей модулей. Список псевдонимов и путей разделяется запятыми, конец списка обозначается точкой с запятой. Путь указывается в кавычках, так же как описывается строка. Можно использовать абсолютные пути, но не рекомендуется, лучше использовать относительные. Относительные пути считаются от папки, в которой расположен файл проекта. Пример: modules
Entry in 'Entry.mad', System in '../Modules/System/System.mad'; // Системный модуль Внутри модулей другие модули подключаются только через псевдонимы, описанные в файле проекта. Это позволяет во-первых, подменить модуль во всём проекте, изменив только одну строку описания модуля, во-вторых, не писать в каждом модуле весь путь до другого модуля. В файле проекта можно использовать определения. Определения позволяют использовать условную компиляцию в программе (в подключемых модулях) или подключать различные модули и создавать новые определения в файле проекта (об этом немного ниже). Пример: DebugMode:= 'True';
Version:= '1.0.3.15'; Некоторые определения относятся к работе компилятора или линковщика. Такие определения должны быть специально помечены префиксами: compiler InlineFunctions:= 'Never'; // задел на будущее, пока не поддерживается
linker OS:= 'Windows'; linker EntryFunction:= 'EntryPoint'; Имена определений относящихся к компилятору или линковщику зарезервированны. Если попытаться использовать их без префиксов - madus выдаст ошибку. В то же время, на них так же можно ссылаться в программе как и на другие. Список всех зарезервированных имён определений смотрите в приложении (пока не написано). В тексте файла проекта можно использовать операторы ветвления для создания определений или подключения модулей. Пример: if Version >= '1.0.3.15' then
modules Version in 'Versions/version-1.0.3.15.mad', Entry in 'Entry-1.0.3.15.mad'; end; if DebugMode = 'True' then compiler InlineFunctions:= 'Never'; linker EntryFunction:= 'DebugEntryPoint'; else compiler InlineFunctions:= 'Always'; linker EntryFunction:= 'EntryPoint'; end; Можно использовать оператор case: case OS of
'Linux' : linker EntryFunction:= 'LinuxEntryPoint'; end; 'Windows32' : linker EntryFunction:= 'Windows32EntryPoint'; end; 'Solaris' : linker EntryFunction:= 'SolarisEntryPoint'; end; else linker EntryFunction:= 'EntryPoint'; end; else у case можно не указывать. Смотрите так же: грамматика файла проекта. |