Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,10 @@ If you want to access the debug backend from another computer, you should allow
* Check [this article](http://doc.qt.io/qt-5/windows-requirements.html) out to set up Qt 5 requirements
* Check the [Hex blog](http://www.hexblog.com/?p=969) about compiling Qt 5.4.1, grab the patch and apply it on Qt5 root dir. Then compile Qt 5
* Set up [Qt VS-Addin](http://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.2.5.exe)
* Visual Studio 2022 + [IDA SDK](https://github.com/HexRaysSA/ida-sdk) to build IDA's 9.2+ plugin. Do the following steps to do that:
* Build IDA SDK [with CMake and Qt6 support](https://github.com/HexRaysSA/ida-sdk?tab=readme-ov-file#building-with-cmake). No separte Qt patches are required for this SDK version.
* Set up more recent version of [Qt VS-Addin](https://download.qt.io/official_releases/vsaddin/3.4.1/).
* Direct plugin project to use Qt6 from the IDA SDK ```src\build\qt-install``` folder.


# How to use
Expand Down
34 changes: 34 additions & 0 deletions labeless.sln
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "labeless_x64dbg", "labeless
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "labeless_ida", "labeless_ida\labeless_ida.vcxproj", "{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "labeless_ida_qt6", "labeless_ida\labeless_ida_qt6.vcxproj", "{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
IDA7_x64|Win32 = IDA7_x64|Win32
Expand All @@ -26,6 +28,8 @@ Global
IDA8_x64|x64 = IDA8_x64|x64
IDA8|Win32 = IDA8|Win32
IDA8|x64 = IDA8|x64
IDA9_Qt6_x64|Win32 = IDA9_Qt6_x64|Win32
IDA9_Qt6_x64|x64 = IDA9_Qt6_x64|x64
IDA9_x64|Win32 = IDA9_x64|Win32
IDA9_x64|x64 = IDA9_x64|x64
Release_DeFixed|Win32 = Release_DeFixed|Win32
Expand All @@ -42,6 +46,9 @@ Global
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA8_x64|x64.ActiveCfg = Release|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA8|Win32.ActiveCfg = Release|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA8|x64.ActiveCfg = Release|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA9_Qt6_x64|Win32.ActiveCfg = Release_DeFixed|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA9_Qt6_x64|Win32.Build.0 = Release_DeFixed|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA9_Qt6_x64|x64.ActiveCfg = Release_DeFixed|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA9_x64|Win32.ActiveCfg = Release|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.IDA9_x64|x64.ActiveCfg = Release|Win32
{2D0215D2-2106-4907-A2A0-C16DE4EEF92F}.Release_DeFixed|Win32.ActiveCfg = Release_DeFixed|Win32
Expand All @@ -58,6 +65,9 @@ Global
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA8_x64|x64.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA8|Win32.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA8|x64.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA9_Qt6_x64|Win32.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA9_Qt6_x64|Win32.Build.0 = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA9_Qt6_x64|x64.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA9_x64|Win32.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.IDA9_x64|x64.ActiveCfg = Release|Win32
{230B05C0-2694-4888-9BB8-86ED666B6F88}.Release_DeFixed|Win32.ActiveCfg = Release|Win32
Expand All @@ -73,6 +83,9 @@ Global
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA8_x64|x64.ActiveCfg = Release|x64
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA8|Win32.ActiveCfg = Release|x64
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA8|x64.ActiveCfg = Release|x64
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA9_Qt6_x64|Win32.ActiveCfg = Release|Win32
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA9_Qt6_x64|Win32.Build.0 = Release|Win32
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA9_Qt6_x64|x64.ActiveCfg = Release|x64
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA9_x64|Win32.ActiveCfg = Release|Win32
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.IDA9_x64|x64.ActiveCfg = Release|x64
{8D02D1C4-D4AA-4A77-B88A-5F1FE7CF1079}.Release_DeFixed|Win32.ActiveCfg = Release|Win32
Expand All @@ -95,13 +108,34 @@ Global
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA8|Win32.ActiveCfg = IDA8|Win32
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA8|x64.ActiveCfg = IDA8|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA8|x64.Build.0 = IDA8|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_Qt6_x64|Win32.ActiveCfg = IDA9|Win32
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_Qt6_x64|Win32.Build.0 = IDA9|Win32
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_Qt6_x64|x64.ActiveCfg = IDA9|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_x64|Win32.ActiveCfg = IDA9_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_x64|x64.ActiveCfg = IDA9_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.IDA9_x64|x64.Build.0 = IDA9_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.Release_DeFixed|Win32.ActiveCfg = IDA7_x64|Win32
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.Release_DeFixed|x64.ActiveCfg = IDA9|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.Release|Win32.ActiveCfg = IDA7|Win32
{ADCF29E6-8039-4ABF-B6CD-28BAEF0793C3}.Release|x64.ActiveCfg = IDA9|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA7_x64|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA7_x64|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA7|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA7|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA8_x64|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA8_x64|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA8|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA8|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_Qt6_x64|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_Qt6_x64|Win32.Build.0 = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_Qt6_x64|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_Qt6_x64|x64.Build.0 = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_x64|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.IDA9_x64|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.Release_DeFixed|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.Release_DeFixed|x64.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.Release|Win32.ActiveCfg = IDA9_Qt6_x64|x64
{ADCF29E6-8039-4ABF-B6CD-28BAEF079355}.Release|x64.ActiveCfg = IDA9_Qt6_x64|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
25 changes: 25 additions & 0 deletions labeless_ida/choosememorydialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,11 +220,20 @@ void ChooseMemoryDialog::on_leManualVaFrom_textChanged(const QString& v)
if (!ok || !size)
return;
leSecondary->setText(ollyStyleFormatHex(from + size));
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
leSecondary->setStyleSheet(QString());
lePrimary->setStyleSheet(QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
leSecondary->setStyleSheet(QString::null);
lePrimary->setStyleSheet(QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(!fromOk || from > BADADDR ? kRedBorderStyleSheet : QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(!fromOk || from > BADADDR ? kRedBorderStyleSheet : QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

void ChooseMemoryDialog::on_leManualVaTo_textChanged(const QString& v)
Expand Down Expand Up @@ -253,9 +262,17 @@ void ChooseMemoryDialog::on_leManualVaTo_textChanged(const QString& v)
if (!ok || !from)
return;

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(from >= ea_end || ea_end > BADADDR ? kRedBorderStyleSheet : QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(from >= ea_end || ea_end > BADADDR ? kRedBorderStyleSheet : QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualSize->setText(ollyStyleFormatHex(ea_end - from));
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualSize->setStyleSheet(QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualSize->setStyleSheet(QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

void ChooseMemoryDialog::on_leManualSize_textChanged(const QString& v)
Expand Down Expand Up @@ -285,9 +302,17 @@ void ChooseMemoryDialog::on_leManualSize_textChanged(const QString& v)
if (!ok || !from)
return;

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(size > BADADDR || from + size > BADADDR ? kRedBorderStyleSheet : QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
le->setStyleSheet(size > BADADDR || from + size > BADADDR ? kRedBorderStyleSheet : QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualVaTo->setText(ollyStyleFormatHex(from + size));
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualVaTo->setStyleSheet(QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
m_UI->leManualVaTo->setStyleSheet(QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

void ChooseMemoryDialog::onManualMeasureTypeChanged(int t)
Expand Down
4 changes: 4 additions & 0 deletions labeless_ida/choosememorydialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@ class ChooseMemoryDialog : public QDialog
Q_OBJECT

public:
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
explicit ChooseMemoryDialog(const MemoryRegionList& memMap, const QString& title = QString(), QWidget* parent = nullptr);
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
explicit ChooseMemoryDialog(const MemoryRegionList& memMap, const QString& title = QString::null, QWidget* parent = nullptr);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
~ChooseMemoryDialog();

bool getSelectedMemory(MemoryRegionList& selected) const;
Expand Down
4 changes: 4 additions & 0 deletions labeless_ida/globalsettingsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,11 @@ QString GlobalSettingsManger::keyToString(GlobalSettingsKey key)
names[kNames[i].k] = kNames[i].name;
}

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
return names.value(key, QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
return names.value(key, QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

void GlobalSettingsManger::detach()
Expand Down
5 changes: 5 additions & 0 deletions labeless_ida/globalsettingsmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,13 @@ class GlobalSettingsManger : public QObject

std::shared_ptr<ScopedSettings> get();

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QVariant value(GlobalSettingsKey key, const QVariant& defaultValue = QVariant(), const QString& group = QString());
bool setValue(GlobalSettingsKey key, const QVariant& value, const QString& group = QString());
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QVariant value(GlobalSettingsKey key, const QVariant& defaultValue = QVariant(), const QString& group = QString::null);
bool setValue(GlobalSettingsKey key, const QVariant& value, const QString& group = QString::null);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)

void detach();

Expand Down
53 changes: 52 additions & 1 deletion labeless_ida/highlighter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,31 @@
#include "pythonpalettemanager.h"

#include <QList>
#include <QRegExp>
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
# include <QRegularExpression>
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
# include <QRegExp>
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#include <QTextCursor>
#include <QTextDocument>
#include <QTextDocumentFragment>
#include <QTextLayout>

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
# define QRegExp QRegularExpression
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)

struct HighlightingRule
{
QRegExp pattern;
int index;
PythonPaletteEntryType t;

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
HighlightingRule(const QString& p = QString(), int idx = 0, PythonPaletteEntryType t_ = PPET_Unknown)
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
HighlightingRule(const QString& p = QString::null, int idx = 0, PythonPaletteEntryType t_ = PPET_Unknown)
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
: pattern(QRegExp(p))
, index(idx)
, t(t_)
Expand Down Expand Up @@ -107,18 +119,30 @@ void Highlighter::highlightBlock(const QString &text)

foreach(const ::HighlightingRule& rule, kHighlightingRules.rules)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
while (matchIterator.hasNext())
{
QRegularExpressionMatch match = matchIterator.next();
int index = match.capturedStart(rule.index);
int length = match.capturedLength(rule.index);
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QRegExp expression(rule.pattern);
int index = expression.indexIn(text);
while (index >= 0)
{
index = expression.pos(rule.index);
int length = expression.cap(rule.index).length();
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
if (m_Formats.contains(rule.t))
{
fmt = m_Formats[rule.t];
setFormat(index, length, fmt);
}
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
index = expression.indexIn(text, index + length);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}
}

Expand All @@ -136,18 +160,36 @@ bool Highlighter::matchMultiline(const QString& text, const ::HighlightingRule&
int add = 0;
int end = 0;
int length = 0;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
QRegularExpressionMatch match;
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
if (previousBlockState() != rule.index)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
match = delimiter.match(text);
start = match.hasMatch() ? match.capturedStart() : -1;
add = match.hasMatch() ? match.capturedLength() : 0;
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
start = delimiter.indexIn(text);
add = delimiter.matchedLength();
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}

while (start >= 0)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
match = delimiter.match(text, start + add);
end = match.hasMatch() ? match.capturedStart() : -1;
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
end = delimiter.indexIn(text, start + add);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
if (end >= add)
{
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
length = end - start + add + match.capturedLength();
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
length = end - start + add + delimiter.matchedLength();
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
setCurrentBlockState(0);
}
else
Expand All @@ -159,7 +201,12 @@ bool Highlighter::matchMultiline(const QString& text, const ::HighlightingRule&
if (m_Formats.contains(rule.t))
fmt = m_Formats[rule.t];
setFormat(start, length, fmt);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
match = delimiter.match(text, start + length);
start = match.hasMatch() ? match.capturedStart() : -1;
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
start = delimiter.indexIn(text, start + length);
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
}
return currentBlockState() == rule.index;
}
Expand Down Expand Up @@ -205,7 +252,11 @@ bool Highlighter::asHtml(QString& result)
for (QTextBlock current = start; current.isValid() && current != end; current = current.next()) {
const QTextLayout* layout(current.layout());

#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
foreach(const QTextLayout::FormatRange &range, layout->formats()) {
#else // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
foreach(const QTextLayout::FormatRange &range, layout->additionalFormats()) {
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
const int start = current.position() + range.start - selectionStart;
const int end = start + range.length;
if (end <= 0 || start >= endOfDocument)
Expand Down
30 changes: 30 additions & 0 deletions labeless_ida/ida90_qt6_x86_64.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros">
<IDA_DIR>m:\!re\IDA Free 9.0sp1\</IDA_DIR>
<SDK_DIR>m:\!re\idasdk90sp1\</SDK_DIR>
<IDA_SUFFIX>92</IDA_SUFFIX>
<QTDIR>C:\ida-sdk_cmake\src\build\qt-install</QTDIR>
</PropertyGroup>
<PropertyGroup />
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="IDA_DIR">
<Value>$(IDA_DIR)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="SDK_DIR">
<Value>$(SDK_DIR)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="IDA_SUFFIX">
<Value>$(IDA_SUFFIX)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
<BuildMacro Include="QTDIR">
<Value>$(QTDIR)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
Loading