gnucash unstable: Clarify cmake build directory location and source path.
John Ralls
jralls at code.gnucash.org
Thu Apr 5 19:50:44 EDT 2018
Updated via https://github.com/Gnucash/gnucash/commit/07ba7a3a (commit)
from https://github.com/Gnucash/gnucash/commit/6c619400 (commit)
commit 07ba7a3a9893e3bc9a9568b5b22c277149a9ee35
Author: John Ralls <jralls at ceridwen.us>
Date: Thu Apr 5 16:50:32 2018 -0700
Clarify cmake build directory location and source path.
diff --git a/cmake/README_CMAKE.txt b/cmake/README_CMAKE.txt
index 9986f8f..4d936ed 100644
--- a/cmake/README_CMAKE.txt
+++ b/cmake/README_CMAKE.txt
@@ -71,10 +71,11 @@ from distro package repositories or by hand. You need at least version
=== Running CMake
-The next step is to invoke CMake to generate the build system. Before
-running CMake, you need to create a build directory:
+CMake works a lot better if you use a separate build directory, so the first
+step is to make one. We recommend that you set the build directory outside of
+the source tree, but it will work in the build tree if you want:
- $ cd .. # back to workdir
+ $ cd # Change to your home directory
$ mkdir gnucash-build
$ cd gnucash-build
@@ -96,9 +97,26 @@ Then decide what cmake command line options you will need:
* If you don't specify a generator, Makefiles will be generated.
- * Finally, put the path to your source directory last.
- Here, that is ../gnucash
-
+ * Finally, put the path to your source directory last. To avoid confusing
+ yourself later with weird cmake or build errors, we suggest that you use the
+ absolute path, for example if you cloned gnucash into your home directory,
+ $HOME/gnucash. If you've cloned or untarred gnucash somewhere else you can
+ $ export SRCROOT=/absolute/path/to/source/parent
+ $ cmake <parameters> $SRCROOT/gnucash
+ Getting into this habit will make sure that you always get the source
+ directory right no matter where you put the build dir. (It's a good habit for
+ `rm -rf`, too: `rm -rf *` can have very frustrating consequences if done from
+ the wrong place!) Be especially careful if you decide to use an in-tree build
+ directory and a relative path: It's easy to
+ $ mkdir build && cd build
+ $ cmake ../gnucash
+ from the source directory. That will fail, because there's a "gnucash"
+ subdirectory with its own CMakeLists.txt, one that doesn't know how to
+ configure the build and can't see the the cmake modules that it needs to run.
+ If you must do this, you want to invoke CMake like
+ $ cmake ..
+ to get the right CMakeLists.txt.
+
* There are other options available; look in the `OPTIONS` section of
the top-level `CMakeLists.txt` file. For example, you can disable
SQL using these options.
@@ -112,24 +130,24 @@ Some examples:
* Build on Linux, don't want to install, use the Makefile generator:
- $ cmake ../gnucash
+ $ cmake $SRCROOT/gnucash
* Build on Linux, install to /tmp/gnucash, use Ninja generator:
- $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -G Ninja ../gnucash
+ $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -G Ninja $SRCROOT/gnucash
* Build on OS X, install to /tmp/gnucash, use Ninja generator:
- $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Ninja ../gnucash
+ $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Ninja $SRCROOT/gnucash
* The same, but use the Xcode generator:
- $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Xcode ../gnucash
+ $ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -G Xcode $SRCROOT/gnucash
* Again, this time pointing to a gmock-1.7.0 source directory:
$ cmake -D CMAKE_INSTALL_PREFIX=/tmp/gnucash -D
- CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -D GMOCK_ROOT=$HOME/gmock-1.7.0 -D GTEST_ROOT=$HOME/gmock-1.7.0/gtest -G Xcode ../gnucash
+ CMAKE_PREFIX_PATH=$HOME/gnucash-unstable -D GMOCK_ROOT=$SRCROOT/gmock-1.7.0 -D GTEST_ROOT=$SRCROOT/gmock-1.7.0/gtest -G Xcode $SRCROOT/gnucash
=== Building
Summary of changes:
cmake/README_CMAKE.txt | 40 +++++++++++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 11 deletions(-)
More information about the gnucash-changes
mailing list