X-Pilot is a client written in C++ and the Qt Framework that can be used to interface X-Plane with the Vatsim network.

Compiling x-pilot was challenging. Here's the general steps I followed (successfully?)

  • Download the xpilot client from https://github.com/xpilot-project/xpilot and install somewhere
    • Please note that when downloading x-pilot, it relies on multiple external repositories found in the externals folder and the plugin folder. If your github client doesn't resolve and download these automatically, you may need to add them manually.
  • From within MSVC 2022, add the Qt libraries under Extensions > Manage Extensions
    • Qt Vs CMake Tools
    • Qt Visual Studio Tools
    • Restart MSVC
  • Install Qt6 (open source)
    • Download and install the Qt Open Source Installer, currently version 6.5, to C:\Qt
    • Add a Qt environment variable for Qt6_HOME to C:\Qt\6.5.2\msvc2019_64
  • The externals/boost folder contains only header files. I needed to download the correct binary version, currently 1.75.0, and install the contents of the lib64-msvc-14.2 folder to externals/boost/lib
  • Restart MSVC and open the "xpilot" folder
  • After clicking "Generate", if all goes well, you should get a number of deliverables in the build dropdown, particularly xpilot.exe


At this point, I got a whole new list of issues. Starting with the include errors, here's a few things I did to resolve them:

  • Add speexdsp folder to the xpilot/client folder so that speexdsp_*.h include files can be found (library already exists in externals)
  • From the opus libraryadd the opus/include folder to the xpilot/client folder so that opus.h include files can be found (library already exists in externals)
  • From the jwt module add the jwt to the root of the client xpilot/client folder so that jwt.hpp can be found


After this, I got a couple errors relating to some Qt identifiers being missing in fsd_client.cpp and appconfig.cpp. Not sure why, but the following needed to each of these files:

#include <QStringDecoder>


This should fix all of the compile issue, but I'm stilling getting a link error because qmlfolderlistmodelplugind.dll is being linked to. This should apparently be a library and not a DLL. I have no idea how to fix it, though.

If you look at C:\Users\bpopp\Documents\Code\xpilot\client\out\build\x64-Debug\build.ninja, you'll see where the DLL is incorrectly being included:

build CMakeFiles\xPilot_autogen_timestamp_deps | ${cmake_ninja_workdir}CMakeFiles\xPilot_autogen_timestamp_deps: phony C$:\Qt\6.5.2\msvc2019_64\.\bin\moc.exe C$:\Qt\6.5.2\msvc2019_64\.\qml\Qt\labs\folderlistmodel\qmlfolderlistmodelplugind.dll C$:\Qt\6.5.2\msvc2019_64\lib\Qt6Networkd.lib C$:\Qt\6.5.2\msvc2019_64\lib\Qt6Cored.lib C$:\Qt\6.5.2\msvc2019_64\lib\Qt6Quickd.lib C$:\Qt\6.5.2\msvc2019_64\lib\Qt6Svgd.lib

Couple things to try:

  • In CMakeLists.txt in the target_link_libraries command:
    • Comment out Qt${QT_MAJOR_VERSION}::qmlfolderlistmodelplugin (this is a DLL and not a library)?
    • Add iphlpapi (needed to resovlve imp_if_nametoindex and several other functions