Как мне настроить папки библиотеки Delphi, чтобы при работе над проектом у меня были как версии Debug, так и Release версии моей библиотеки модулей? До сих пор я компилировал свою библиотеку в режиме Release после завершения. Но я столкнулся с ситуациями, когда я работаю над проектом, и мне нужно выполнить шаги отладки даже в скомпилированных модулях. Но если они скомпилированы как Release, меня это не пустит. И если я компилирую их как Debug, он помещает код отладки в Release-версию проекта, что ненормально. Я бы хотел, чтобы когда я переключаюсь между Debug и Release в своем проекте, блоки тоже переключались. Можно ли это сделать? Если я помещу папки Debug и Releas в путь к библиотеке Delphi, он будет знать, когда выбрать правильный?
Вопрос не ясен. Являются ли библиотеки частью проекта или они существуют отдельно? Пожалуйста, рассмотрите возможность привести более подробный пример.
@UweRaabe Речь идет об общей библиотеке (сделанной мной). Это не часть проекта.
Вероятно, вам нужен «Путь DCU отладки» в «Параметры» -> «Язык» -> «Delphi» -> «Библиотека». Соглашение заключается в том, чтобы поместить предварительно скомпилированные DCU отладки в подпапку с именем «debug».
Итак, в «Путь отладки DCU» я помещаю модули, скомпилированные в режиме отладки, а в «Путь к библиотеке» — версию выпуска?
Delphi IDE может использовать Debug Win32 версию DCU, DCL и BPL, это не проблема. Чтобы правильно собрать ваше приложение, вы можете сделать следующие шаги: установить Output directory
вашей библиотеки что-то вроде $(MyLibraryPath)\Bin\$(Platform)\$(Config)
, затем добавить в Search path
вашего приложения такое же значение. После этого компилятор Delphi во всех случаях будет брать правильную версию библиотеки. Он заменит $(Platform)
на Win32
или Win64
и $(Config)
на Release
или Debug
в зависимости от текущих параметров здания. $(MyLibraryPath)
может быть какой-то абсолютный путь или добавить такую переменную среды.
Наконец-то мне удалось понять, как это работает: ключ $(Platform)
и $(Config)
.
Я сделал тестовый модуль с функцией, которая сообщает мне, какую конфигурацию я использую:
unit Test;
interface
function GetConfig: String;
implementation
function GetConfig: String;
begin
{$IFDEF RELEASE} Result:= 'Release'; {$ENDIF}
{$IFDEF DEBUG} Result:= 'Debug'; {$ENDIF}
end;
end.
Я скомпилировал его в режиме отладки и выпуска и сохранил файлы .dcu
в D:\Delphi\MyLIB\Win32\Release и \Debug. И .pas
в папке D:\Delphi\MySRC. Затем я иду в «Инструменты»> «Параметры»> «Язык»> «Delphi»> «Библиотека» и добавляю D:\Delphi\MyLIB\$(Platform)\$(Config)
в раздел «Путь к библиотеке» и «D:\Delphy\MySRC» в «Путь просмотра».
Теперь, если я создам новый проект и использую этот модуль, будет выбрана правильная версия в соответствии с конфигурацией сборки. И если я переключусь на отладку и сделаю над этой функцией Trace Into (F7)
, я смогу отладить внутри нее.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Test;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption:= GetConfig;
end;
end.
Спасибо за комментарий Oleksandr Morozevych
!
Зачем нужно отлаживать релизную версию? Кроме того, этот вопрос не по теме Stack Overflow — вам лучше задать его в Delphi Praxis.