]> git.mxchange.org Git - flightgear.git/blobdiff - README.cmake
#897: float vs double precision issues (frequency dialog not always working)
[flightgear.git] / README.cmake
index f6c0e26825e134a6254276eab3c8ad7efe1b07b7..767f9c779c6a3bf476c13963a5da2c6f89a3ef8f 100644 (file)
@@ -1,4 +1,7 @@
 Getting started with CMake
 Getting started with CMake
+==========================
+
+[For Windows build instructions see README.msvc]
 
 (These instructions apply to Unix-like systems, including Cygwin and Mac. To
 build using Visual Studio or some other IDE supported by CMake, most of the
 
 (These instructions apply to Unix-like systems, including Cygwin and Mac. To
 build using Visual Studio or some other IDE supported by CMake, most of the
@@ -8,8 +11,8 @@ Always compile in a separate directory to the code. For example, if the
 code (eg, from Git) is at /home/curt/projects/flightgear, you might create
 /home/curt/projects/fgbuild. Change into the new directory, and run
 
 code (eg, from Git) is at /home/curt/projects/flightgear, you might create
 /home/curt/projects/fgbuild. Change into the new directory, and run
 
-    cmake ../flightger
-    
+    cmake ../flightgear
+
 To generate standard Unix Makefiles in fgbuild.
 
 Probably you want to specify an install prefix:
 To generate standard Unix Makefiles in fgbuild.
 
 Probably you want to specify an install prefix:
@@ -20,21 +23,32 @@ Note the install prefix is automatically searched for required libraries
 and header files, so if you install PLIB, OpenSceneGraph and SimGear to the
 same prefix, most configuration options are unnecessary.
 
 and header files, so if you install PLIB, OpenSceneGraph and SimGear to the
 same prefix, most configuration options are unnecessary.
 
-To specify that a particular dependency is in a non-standard location, most
-libraries support an environment variable - eg PLIBDIR or OSG_ROOT - to
-allow precise selection.
+If for some reason you have a dependency (or several) at a different prefix,
+you can specify one or more via CMAKE_PREFIX_PATH:
+
+    cmake ../flightgear -DCMAKE_PREFIX_PATH="/opt/local;/opt/fgfs"
+
+(note the use of semi-colons to specify multiple prefix paths)
+
+Standard prefixes are searched automatically (/usr, /usr/local, /opt/local)
+
+Most dependencies also expose an environment variable to specify their
+installation directory explicitly eg OSG_DIR or PLIBDIR. Any of the methods
+described above will work, but specifying an INSTALL_PREFIX or PREFIX_PATH is
+usually simpler.
 
 By default, we select a release build. To create a debug build, use
 
     cmake ../flightgear -DCMAKE_BUILD_TYPE=Debug
 
 By default, we select a release build. To create a debug build, use
 
     cmake ../flightgear -DCMAKE_BUILD_TYPE=Debug
-    
+
 (or MinSizeRel, or RelWithDbg)
 
 Debug builds will automatically use corresponding debug builds of required
 libraries, if they are available. For example you can install debug builds of
 SimGear and OpenSceneGraph, and a debug FlightGear build will use them.
 
 (or MinSizeRel, or RelWithDbg)
 
 Debug builds will automatically use corresponding debug builds of required
 libraries, if they are available. For example you can install debug builds of
 SimGear and OpenSceneGraph, and a debug FlightGear build will use them.
 
-(Debug builds of libraries have the 'd' suffix by default)
+(Debug builds of libraries have the 'd' suffix by default - Release builds
+have no additional suffix)
 
 Note most IDE projects (eg Xcode and Visual Studio) support building all the
 build types from the same project, so you can omit the CMAKE_BUILD_TYPE option
 
 Note most IDE projects (eg Xcode and Visual Studio) support building all the
 build types from the same project, so you can omit the CMAKE_BUILD_TYPE option
@@ -53,17 +67,21 @@ To set an optional feature, do
 
     cmake ../flightgear -DFEATURE_NAME=ON
 
 
     cmake ../flightgear -DFEATURE_NAME=ON
 
+(or 'OFF' to disable )
+
 To see the variables that can be configured / are currently defined, you can
 run one of the GUI front ends, or the following command:
 
 To see the variables that can be configured / are currently defined, you can
 run one of the GUI front ends, or the following command:
 
-    cmake ../flighgear -L
+    cmake ../flightgear -L
 
 Add 'A' to see all the options (including advanced options), or 'H' to see
 the help for each option (similar to running configure --help under autoconf):
 
     cmake ../flightgear -LH
 
 
 Add 'A' to see all the options (including advanced options), or 'H' to see
 the help for each option (similar to running configure --help under autoconf):
 
     cmake ../flightgear -LH
 
+
 Build Targets
 Build Targets
+=============
 
 For a Unix makefile build, 'make dist', 'make uninstall' and 'make test' are
 all available and should work as expected. 'make clean' is also as normal,
 
 For a Unix makefile build, 'make dist', 'make uninstall' and 'make test' are
 all available and should work as expected. 'make clean' is also as normal,
@@ -80,7 +98,7 @@ For target conditional files, you can append to the SOURCES or HEADERS lists
 inside an if() test, for example:
 
     if(APPLE)
 inside an if() test, for example:
 
     if(APPLE)
-       list(APPEND SOURCES extraFile1.cxx extraFile2.cxx)
+        list(APPEND SOURCES extraFile1.cxx extraFile2.cxx)
     endif()
 
 Setting include directories
     endif()
 
 Setting include directories
@@ -98,11 +116,11 @@ Use set_target_property(), for example
 
     set_target_property(fgfs PROPERTIES
             COMPILE_DEFINITIONS FOO BAR=1)
 
     set_target_property(fgfs PROPERTIES
             COMPILE_DEFINITIONS FOO BAR=1)
-            
+
 You can set a property on an individual source file:
 
     set_property(SOURCE myfile.cxx PROPERTY COMPILE_FLAGS "-Wno-unsigned-compare")
 You can set a property on an individual source file:
 
     set_property(SOURCE myfile.cxx PROPERTY COMPILE_FLAGS "-Wno-unsigned-compare")
-            
+
 Detecting Features / Libraries
 
 For most standard libraries (Gtk, wxWidget, Python, GDAL, Qt, libXml, Boost),
 Detecting Features / Libraries
 
 For most standard libraries (Gtk, wxWidget, Python, GDAL, Qt, libXml, Boost),
@@ -113,7 +131,7 @@ cmake provides a standard helper. To see the available modules, run:
 In the root CMakeLists file, use a statement like:
 
     find_package(OpenGL REQUIRED)
 In the root CMakeLists file, use a statement like:
 
     find_package(OpenGL REQUIRED)
-    
+
 Each package helper sets various variables such aaa_FOUND, aaa_INCLUDE_DIR,
 and aaa_LIBRARY. Depending on the complexity of the package, these variables
 might have different names (eg, OPENSCENEGRAPH_LIBRARIES).
 Each package helper sets various variables such aaa_FOUND, aaa_INCLUDE_DIR,
 and aaa_LIBRARY. Depending on the complexity of the package, these variables
 might have different names (eg, OPENSCENEGRAPH_LIBRARIES).
@@ -125,18 +143,19 @@ directory, eg /usr/share/cmake/modules on Unix systems.
 
 Note libraries support by pkg-config can be handled directly, with no need
 to create a custom FindABC helper.
 
 Note libraries support by pkg-config can be handled directly, with no need
 to create a custom FindABC helper.
-            
+
 Adding a new executable target
 
     add_executable(myexecutable ${SOURCES} ${HEADERS})
     target_link_libraries(myexecutable .... libraries ... )
     install(TARGETS myexecutable RUNTIME DESTINATION bin)
 Adding a new executable target
 
     add_executable(myexecutable ${SOURCES} ${HEADERS})
     target_link_libraries(myexecutable .... libraries ... )
     install(TARGETS myexecutable RUNTIME DESTINATION bin)
-    
+
 (If the executable should not be installed, omit the final line above)
 
 If you add an additional line
 
     add_test(testname ${EXECUTABLE_OUTPUT_PATH}/myexecutable)
 (If the executable should not be installed, omit the final line above)
 
 If you add an additional line
 
     add_test(testname ${EXECUTABLE_OUTPUT_PATH}/myexecutable)
-    
+
 Then running 'make test' will run your executable as a unit test. The
 executable should return either a success or failure result code.
 Then running 'make test' will run your executable as a unit test. The
 executable should return either a success or failure result code.
+