| # | |
| # This function will prevent in-source builds | |
| function(AssureOutOfSourceBuilds) | |
| # make sure the user doesn't play dirty with symlinks | |
| get_filename_component(srcdir "${CMAKE_SOURCE_DIR}" REALPATH) | |
| get_filename_component(bindir "${CMAKE_BINARY_DIR}" REALPATH) | |
| # disallow in-source builds | |
| if("${srcdir}" STREQUAL "${bindir}") | |
| message("######################################################") | |
| message("# jsoncpp should not be configured & built in the jsoncpp source directory") | |
| message("# You must run cmake in a build directory.") | |
| message("# For example:") | |
| message("# mkdir jsoncpp-Sandbox ; cd jsoncpp-sandbox") | |
| message("# git clone https://github.com/open-source-parsers/jsoncpp.git # or download & unpack the source tarball") | |
| message("# mkdir jsoncpp-build") | |
| message("# this will create the following directory structure") | |
| message("#") | |
| message("# jsoncpp-Sandbox") | |
| message("# +--jsoncpp") | |
| message("# +--jsoncpp-build") | |
| message("#") | |
| message("# Then you can proceed to configure and build") | |
| message("# by using the following commands") | |
| message("#") | |
| message("# cd jsoncpp-build") | |
| message("# cmake ../jsoncpp # or ccmake, or cmake-gui ") | |
| message("# make") | |
| message("#") | |
| message("# NOTE: Given that you already tried to make an in-source build") | |
| message("# CMake have already created several files & directories") | |
| message("# in your source tree. run 'git status' to find them and") | |
| message("# remove them by doing:") | |
| message("#") | |
| message("# cd jsoncpp-Sandbox/jsoncpp") | |
| message("# git clean -n -d") | |
| message("# git clean -f -d") | |
| message("# git checkout --") | |
| message("#") | |
| message("######################################################") | |
| message(FATAL_ERROR "Quitting configuration") | |
| endif() | |
| endfunction() | |
| AssureOutOfSourceBuilds() |