X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=README.cmake;h=767f9c779c6a3bf476c13963a5da2c6f89a3ef8f;hb=b838691f50ecd639c9a6d8a675e8d8986d4f2b49;hp=f6c0e26825e134a6254276eab3c8ad7efe1b07b7;hpb=8382a8dc1ee096ef584c6a23077161a74f3c6a31;p=flightgear.git diff --git a/README.cmake b/README.cmake index f6c0e2682..767f9c779 100644 --- a/README.cmake +++ b/README.cmake @@ -1,4 +1,7 @@ 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 @@ -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 - cmake ../flightger - + cmake ../flightgear + 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. -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 - + (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 @@ -53,17 +67,21 @@ To set an optional feature, do 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: - 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 + 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, @@ -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) - list(APPEND SOURCES extraFile1.cxx extraFile2.cxx) + list(APPEND SOURCES extraFile1.cxx extraFile2.cxx) endif() Setting include directories @@ -98,11 +116,11 @@ Use set_target_property(), for example 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") - + 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) - + 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. - + 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) - + Then running 'make test' will run your executable as a unit test. The executable should return either a success or failure result code. +