Development environment setup¶
This page contains recommendations and tips on how to better setup different IDEs for Iaito development.
General advice¶
Everyone has their own preferences for their favorite IDE or code editor. There are no strict requirements for using a specific one for Iaito development. Any IDE with good CMake integration should work well.
For most development builds, unless you are working on packaging issues, it is recommended to use IAITO_USE_BUNDLED_RADARE2=ON
Cmake option. It is the easiest way to ensure that a compatible r2 version is used, and helps you deal with different versions of radare2 when working with multiple Iaito branches. On Linux, in case you have multiple r2 versions without IAITO_USE_BUNDLED_RADARE2
, the PKG_CONFIG_PATH
environment variable can be used to select the desired radare2 installation.
While Qt Creator has a builtin visual form and widget editor, not having it in other IDEs is not a major problem. It is also available as a standalone tool called Qt Designer and you can configure the file associations so that .ui
files are opened using it. Depending on the .ui
file and changes you want to make, it is sometimes easier to perform them by editing the .ui
file as a text file. Essentially, .ui
files are XML files. Most code editors should have some support for XML highlighting and possibly block folding.
The following instructions and recommendations assume that you have already download Iaito source and obtained required dependencies as described in Building.
Linux¶
On a rolling-release distribution or a somewhat recent version of traditional distributions like Ubuntu 18.04, it should be possible to get all the dependencies from the official repository. There might be some problems with PySide2 and Shiboken2 but it can be easily disabled and isn’t necessary for most work on Iaito. Don’t try to install PySide using pip.
Windows¶
Assuming you have a sufficiently powerful computer, a nice way of getting and configuring Qt for Iaito is to use vcpkg. For a quick test, the exact versions of libraries used by Iaito release packages can be obtained from cutter-deps but they don’t contain debug versions of libraries so they are not suitable for more serious Iaito development on Windows.
Qt Creator¶
QT Creator is an open-source IDE made by the same developers as Qt.
Even though Iaito has qmake project cutter.pro it is recommended to use the CMake project in QTCreator. QTCreator support for CMake is as good as qmake one but not all Iaito project configuration options are available in qmake project and in future Iaito qmake project might be removed.
Pros and Cons¶
builtin help for Qt API
builtin .ui file editor (Qt Designer - visual form editor)
builtin helper for displaying Qt types in the debugger
Viewing source files that are not directly part of the project (R2 source code) is somewhat inconvenient.
The simplest way of installing on non-Linux operating systems require login with Qt account
Project setup¶
The following instructions were made based on version 4.12.4 of Qt Creator. The steps might slightly differ between the versions.
Go to
and selectcutter/src/CMakeList.txt
Select kit and press Configure Project
Configuration step might fail due to r2 not being found, that’s normal
Click Projects button with wrench icon on the left side of the screen
Click
in the CMake sectionEnter
IAITO_USE_BUNDLED_RADARE2
as a key name and change the value to ON. In earlier Qt Creator versions it is necessary to do this during the initial kit selection and configuration step.Click Apply Configuration Changes:. The configuration should succeed now. In case of errors inspect the output log.
Either in Qt [built-in]. It should be selected by default unless you have used Qt Creator for other projects. Iaito Coding style is almost identical to Qt one. This will help with using correct indentation type and basic formatting without running code formatter.
or selectTo configure AStyle for formatting a file go to Use file *.astylerc defined in project files option doesn’t seem to be working reliably so it is necessary to use Use specific config file option. Iaito astyle configuration is stored in cutter/src/Iaito.astylerc
.
Changing CMake configuration¶
Click on the “Projects” button on the left side of the screen and then select “Build”. All the project CMake options are listed and can be edited there in a graphical editor.
Editing Qt .ui files¶
Double-clicking a .ui
file in a file list opens it inside a visual editor. If you want to make changes that are easier to do by editing .ui
file as text - right-click the file and select . Switching from visual form editor back to code editor mode will open the .ui
file in read-only mode with the following warning “This file can only be edited in Design mode”. To edit use the same steps as described before.
VS Code¶
VS Code is an open-source code editor made by Microsoft.
Pros and Cons¶
A large number of plugins
A good fallback mechanism for files that are not directly part of a project.
Recommended plugins¶
C/C++ - The official C++ support plugin made by Microsoft
CMake Tools - Provides CMake project integration. Originally developed by vector-of-bool and currently maintained by Microsoft.
CMake - CMake language support when editing CMake files. Does not replace the previous CMake plugin. They provide non-overlapping functionality and should be used together.
Project setup¶
and select the folder in which you cloned Iaito
Install the recommended plugins.
Once the CMake Tools plugin is installed, in the corner you will see a popup asking you “Would you like to configure project ‘cutter’? Source: CMake Tools (Extension)”. Click Yes.
In the kit selection popup, choose [Unspecified] unless you have more specific needs.
If you initially dismissed the configuration window or didn’t have the plugins installed yet - open command-palette using Ctrl-Shift-P and select Cmake: Configure
Changing CMake configuration¶
After the first configuration Ctrl-Shift-P/CMake: Edit CMake Cache opens a text editor with all CMake options. Iaito specific ones mostly start with “CUTTER”.
Note
IAITO_USE_BUNDLED_RADARE2
option is also defined in .vscode/settings.json
file and it will be overridden from there. It is set to ON
by default as it is recommended during development.
Building, Running, Debugging¶
Build and running commands are available in the status bar at the bottom and in the Command Palette menu (Ctrl-Shift-P) named CMake: Build F7
, CMake: Run Without Debugging Shift+F5
, and CMake Debug Ctrl + F5
.
Shortcuts can be viewed in the Ctrl-Shift-P menu. They don’t match default VS Code ones since those depend on tasks.json`
.
Running and debugging launches the executable without any arguments. Command-line arguments can be passed to the debug
executable by creating a .vscode/launch.json
configuration. Read the documentation for more information. Instead of creating launch.json
manually it can be created from template: Ctrl-Shift-P/ .
To setup gdb pretty printers for Qt types on Linux, download the scripts from Kdevelop. In the ~/.gdbinit
file add the following code:
python
import sys
sys.path.insert(0, '/path/to/folder/with/pretty_printer_scripts')
from qt import register_qt_printers
register_qt_printers (None)
end
set print pretty 1
CLion¶
CLion is a C and C++ IDE from the popular software development tool maker - JetBrains.
Pros and Cons¶
Medium amount of plugins, many first-party plugins made by JetBrains for their IntelliJ based IDE family
There is no free version
Takes some time to analyze the files after opening a project. Switching between .cpp and corresponding .h file may for the first time may take a few seconds.
Project setup¶
Go to
and select the folder in which you cloned IaitoGo to CMake Options field enter
. In the-DIAITO_USE_BUNDLED_RADARE2=ON
Open
cutter/src/CMakeLists.txt
using the project file list on the left side of the screenA yellow bar with a message CMake project is not loaded should appear, click Load CMake project
Changing CMake configuration¶
Go to -DOPTION_NAME=VALUE
.
Building, Running, Debugging¶
Follow the Clion documentation for how to configure Qt type debugger renderers. If you are using the MSVC toolchain
it can use qt5.natvis
. In rest of the cases you can use .gdbinit
or ..ldbinit
based approach similar to one described for VSCode setup
Editing Qt .ui files¶
Default CLion behavior for opening .ui files is somewhat buggy. Double-clicking the file does nothing, but it can be opened by dragging it to the text editor side. This can be somewhat improved by changing file association. Open and change type association of *.ui files from Qt UI Designer Form to either “XML” or Files Opened in Associated Applications. The first one will open it within CLion as an XML file and the second will use the operating system configuration.
Visual Studio¶
Visual Studio Community edition is available for free and can be used for contributing to open source projects.
It is recommended to use the latest Visual Studio version 2019 because it has the best CMake integration. Older VS versions can be used but CMake integration isn’t as good. With those, it might be better to generate Visual Studio project from CMake project using the command-line or cmake-gui and opening the generated Visual Studio project instead of opening the CMake project directly.
Visual Studio supports many different languages and use-cases. Full installation takes a lot of space. To keep the size minimal during installation select only component called “Desktop development with C++”. Don’t worry too much about missing something. Additional components can be later added or removed through the VS installer which also serves as an updater and package manager for Visual Studio components.
Pros and Cons¶
good debugger
medium amount of plugins
completely closed source
Windows only
Project setup¶
Open folder in which you cloned Iaito source using Visual Studio
Open CMake settings configurator using either Open the CMake Settings Editor in the overview page.
or by clickingCheck
IAITO_USE_BUNDLED_RADARE2
optionIf you are using vcpkg, Visual Studio should detect it automatically. The list of CMake options in the configurator should have some referring to vcpkg. If they are not there, specify the path to vcpkg toolchain file in the CMake toolchain file field.
If you are not using vcpkg, configure the path to Qt as mentioned in windows CMake instructions. You can specify the CMake flag in CMake command arguments: field.
To Ensure that VS debugger can display Qt types in a readable way, it is recommended to install Qt Visual Studio Tools plugin. It will create a
Documents/Visual Studio 2019/Visualizers/qt5.natvis
file. Onceqt5.natvis
has been created you can uninstall the plugin.
Changing CMake configuration¶
Open
. CMake options can be modified either in graphical table editor, as a command-line flag or by switching to the JSON view.Editing Qt .ui files and Qt integration¶
By default Visual Studio will open .ui
files as XML text documents. You can configure to open it using Qt Designer by right-clicking and selecting Open With….
There is a Qt plugin for Visual Studio from Qt. It isn’t very useful for Iaito development since it is aimed more at helping with Qt integration into Visual Studio projects.
It doesn’t do much for CMake based projects. The biggest benefit is that it automatically installs qt5.natvis
file for more readable displaying of Qt types in the debugger.