Superbuild: Difference between revisions
Line 5: | Line 5: | ||
In all cases, you should get the superbuild by doing a clean clone (from Git) of fgmeta, with the --recursive options. This tells Git to clone submodules, which we need since both flightgear and simgear are submodules of fgmeta. | In all cases, you should get the superbuild by doing a clean clone (from Git) of fgmeta, with the --recursive options. This tells Git to clone submodules, which we need since both flightgear and simgear are submodules of fgmeta. | ||
Checkout the 'next' branch of fgmeta for the moment; the superbuild is not supported on the release branches. | Checkout the 'next' branch of fgmeta for the moment; the superbuild is not supported on the release branches. Note that providing you cloned with '--recursive', git pull will also update submodules automatically; some documentation and pages may tell you to manually run 'git update submodules' but providing you do the initial clone with '--recursive' option, it should not be needed. | ||
Note the superbuild does not include any data repository or base files - you should separately download these or clone fgdata, and pass the location to fgfs when running in your preferred way, eg via the --fg-root command line argument. | Note the superbuild does not include any data repository or base files - you should separately download these or clone fgdata, and pass the location to fgfs when running in your preferred way, eg via the --fg-root command line argument. |
Revision as of 20:11, 22 October 2013
Building via the superbuild
A CMake super-build is a project which downloads, configures and builds other projects. Download can be from a web server, or via Git or SVN. Most normal CMake options apply - you can use different generators (Makefiles, VisualStudio, XCode) and pass in options.
In all cases, you should get the superbuild by doing a clean clone (from Git) of fgmeta, with the --recursive options. This tells Git to clone submodules, which we need since both flightgear and simgear are submodules of fgmeta.
Checkout the 'next' branch of fgmeta for the moment; the superbuild is not supported on the release branches. Note that providing you cloned with '--recursive', git pull will also update submodules automatically; some documentation and pages may tell you to manually run 'git update submodules' but providing you do the initial clone with '--recursive' option, it should not be needed.
Note the superbuild does not include any data repository or base files - you should separately download these or clone fgdata, and pass the location to fgfs when running in your preferred way, eg via the --fg-root command line argument.
Superbuild on Windows
Using VisualStudio / msbuild:
We assume you have cloned fgmeta in C:\FGFS\fgmeta. All the example paths below work just fine if you replace C:\FGFS with G:\MyAwesomeDir\AnySubDir. (Spaces in the paths are untested and might cause issues, but might work fine)
The steps are as follows:
- Make a build dir beside fgmeta - for example C:\FGFS\metabuild
- Run the CMake GUI, and select C:\FGFS\fgmeta as the source dir, and C:\FGFS\metabuild as the build dir
- Run 'Configure' once, and set CMAKE_INSTALL_PREFIX to C:\FGFS\metabuild\install (this step will be automated soon)
- Run 'Configure' again, and then 'Generate'
C:\FGFS\metabuild now contains a FlightGear-Meta solution (.sln);you can build this from a Visual Studio command prompt using msbuild, or open up the .sln in the IDE and again hit build. The first time will be slow - OpenSceneGraph and Boost will be downloaded and compiled, followed by all of simgear and finally flightgear.
Once the build completes, it is easier to run FlightGear by closing the -Meta solution, and instead opening the Flightgear.sln in C:\FGFS\metabuild\fgbuild. From here you can set 'fgfs' as the startup project, enter any command line options, and debug / hack / run the code as normal.
Note you will need to add the OpenSceneGraph install directory to the PATH variables in the 'fgfs' target properties; the dir will be something like C:\FGFS\metabuild\install\msvc100\OpenSceneGraph\bin. Again this step will hopefully go away soon, bu for the moment is still required.
Using other generators / IDEs: untested, but quite likely to work if they already work with CMake. Try it out.
Superbuild on Linux
(The follow assumes regular 'make' generator, other generators may work, testing welcome)
- make build dir next to your fgmeta clone
- cd into the build dir
- run cmake ../fgmeta -DCMAKE_INSTALL_PREFIX=$PWD/install -DCMAKE_BUILD_TYPE=Release (or Debug for a debug configuration(
- run make -jN (where N is as large a number as your system can support)
- make some coffee
- fgfs should be in install/bin
Superbuild on Mac
Make-based build works, XCode is more interesting. Probably only for the brave,