Skip to content

Latest commit

 

History

History
55 lines (42 loc) · 2.67 KB

README.md

File metadata and controls

55 lines (42 loc) · 2.67 KB

Hello-World-SDK-3

Build all Platforms

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.

Credits

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.

Build

IDE

  • MacOS: Just open HelloWorld.xcodeproj in Xcode.
  • MS Visual Studio: Do "File > Open > Folder..." on the project's main folder. VS will initialize based on CMakeList.txt and CMakeSettings.json.

Docker Cross Compile

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

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 here
  • MACOS_CERT_PWD: The password for the above .p12 certificate file export
  • NOTARIZATION_USERNAME: Apple ID for notarization service (parameter --apple-id to notarytool)
  • NOTARIZATION_TEAM: Team ID for notarization service (parameter --team-id to notarytool)
  • NOTARIZATION_PASSWORD: App-specific password for notarization service (parameter --password to notarytool)