This is a "Hello World" example plugin for use with X-Plane and can serve as a basis for your own plugin development. Its code is originally taken from X-Plane's developer site.
Added are an IDE project for XCode as well as a CMakeList.txt setup
for use with MS Visual Studio, the provided Docker environment for cross platform build,
and GitHub Actions.
The project is based on
- X-Plane SDK to integrate with X-Plane
- Laminar's Hello World example
- GitHub Actions
- and countless blog entries with crucial tips&tricks of various developers and CD/CI engineers, which I unfortunately missed to keep track of.
- MacOS: Just open
HelloWorld.xcodeprojin Xcode. - MS Visual Studio: Do "File > Open > Folder..." on the project's main folder.
VS will initialize based on
CMakeList.txtandCMakeSettings.json.
For Cross Compile in a Docker environment for Linux, Mac, and Windows see docker/README.md.
Essentially this boils down to installing Docker Desktop, then:
cd docker
make
Given a proper local setup with a suitable compile, CMake, and Ninja installed,
you can just locally build the sources from the CMakeList.txt file,
e.g. like this:
mkdir build
cd build
cmake -G Ninja ..
ninja
This is precicely how the Mac and Linux builds are done in Github Actions.
The GitHub workflow .github/workflows/build.yml builds the plugin in GitHubs CD/CI environment.
build.yml calls a number of custom composite actions available in .github/actions,
each coming with its own README.md.
The workflow builds Linux, MacOS, and Windows plugin binaries and provides them as artifacts, so you can download the result from the Actions tab on GitHub.
For MacOS, the plugin can be signed and notarized, provided that the required Repository Secrets are defined in the repository's settings (Settings > Secrets > Actions):
MACOS_CERTIFICATE: Base64-encoded .p12 certificate as explained hereMACOS_CERT_PWD: The password for the above .p12 certificate file exportNOTARIZATION_USERNAME: Apple ID for notarization service (parameter--apple-idtonotarytool)NOTARIZATION_TEAM: Team ID for notarization service (parameter--team-idtonotarytool)NOTARIZATION_PASSWORD: App-specific password for notarization service (parameter--passwordtonotarytool)