summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Maynard <rmaynard@nvidia.com>2022-03-15 14:13:00 -0400
committerBrad King <brad.king@kitware.com>2022-03-17 09:38:32 -0400
commitfea270d3edd77de3930c57b316ed9391792aab6d (patch)
treef67f4fb7841e8f94462a9ccb58d6cc51721be07c
parentb2ba662ca655848455b086017c1699cf11ee5af9 (diff)
downloadcmake-fea270d3edd77de3930c57b316ed9391792aab6d.tar.gz
Help: Document cmake source and binary dir selection rules
Co-authored-by: Brad King <brad.king@kitware.com>
-rw-r--r--Help/manual/cmake.1.rst20
1 files changed, 20 insertions, 0 deletions
diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst
index f7d4f6b6d0..9a2b2ef8fa 100644
--- a/Help/manual/cmake.1.rst
+++ b/Help/manual/cmake.1.rst
@@ -151,6 +151,26 @@ source and build trees and generate a buildsystem:
In all cases the ``<options>`` may be zero or more of the `Options`_ below.
+The above styles for specifying the source and build trees may be mixed.
+Paths specified with ``-S`` or ``-B`` are always classified as source or
+build trees, respectively. Paths specified with plain arguments are
+classified based on their content and the types of paths given earlier.
+If only one type of path is given, the current working directory (cwd)
+is used for the other. For example:
+
+============================== ============ ===========
+ Command Line Source Dir Build Dir
+============================== ============ ===========
+ ``cmake src`` ``src`` `cwd`
+ ``cmake build`` (existing) `loaded` ``build``
+ ``cmake -S src`` ``src`` `cwd`
+ ``cmake -S src build`` ``src`` ``build``
+ ``cmake -S src -B build`` ``src`` ``build``
+ ``cmake -B build`` `cwd` ``build``
+ ``cmake -B build src`` ``src`` ``build``
+ ``cmake -B build -S src`` ``src`` ``build``
+============================== ============ ===========
+
After generating a buildsystem one may use the corresponding native
build tool to build the project. For example, after using the
:generator:`Unix Makefiles` generator one may run ``make`` directly: