mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2024-12-26 18:51:04 +08:00
8954092f0a
* ENH: Prevent cmake in source builds Building directly inside the root of the source tree can cause problems where the build intermediate files overwrite or conflict with the intended source code files. This modification identifies this problem and issues failure messages and suggestions to over come the problem with more robust build suggestion. Co-authored-by: Jordan Bayles <jophba@chromium.org>
46 lines
1.9 KiB
CMake
46 lines
1.9 KiB
CMake
#
|
|
# 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()
|