2
0
Эх сурвалжийг харах

Detects that binary dir and install prefix are not the same (#4091)

Signed-off-by: Esteban Papp <[email protected]>
Esteban Papp 3 жил өмнө
parent
commit
de3d2a2b69

+ 11 - 1
cmake/OutputDirectory.cmake

@@ -14,6 +14,16 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin CACHE PATH "Build dir
 # We install outside of the binary dir because our install support muliple platforms to 
 # We install outside of the binary dir because our install support muliple platforms to 
 # be installed together. We also have an exclusion rule in the AP that filters out the 
 # be installed together. We also have an exclusion rule in the AP that filters out the 
 # "install" folder to avoid the AP picking it up
 # "install" folder to avoid the AP picking it up
+unset(define_with_force)
 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
-    set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install CACHE PATH "Install directory" FORCE)
+    set(define_with_force FORCE)
+endif()
+set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install CACHE PATH "Install directory" ${define_with_force})
+
+cmake_path(ABSOLUTE_PATH CMAKE_BINARY_DIR NORMALIZE OUTPUT_VARIABLE cmake_binary_dir_normalized)
+cmake_path(ABSOLUTE_PATH CMAKE_INSTALL_PREFIX NORMALIZE OUTPUT_VARIABLE cmake_install_prefix_normalized)
+cmake_path(COMPARE ${cmake_binary_dir_normalized} EQUAL ${cmake_install_prefix_normalized} are_paths_equal)
+if(are_paths_equal)
+    message(FATAL_ERROR "Binary dir is the same path as install prefix, indicate a different install prefix with "
+        "CMAKE_INSTALL_PREFIX or a different binary dir with -B <binary dir>")
 endif()
 endif()