CUDA_TOOLKIT_TARGET_DIR not cached
Hi,
In commit 7229ae72 the set of CUDA_TOOLKIT_TARGET_DIR in FindCUDA.cmake was re-organized and in one place it is not cached:
$ git grep 'set(CUDA_TOOLKIT_TARGET_DIR'
Modules/FindCUDA.cmake: unset(CUDA_TOOLKIT_TARGET_DIR CACHE)
Modules/FindCUDA.cmake: set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
Modules/FindCUDA.cmake: set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT}/targets/${CUDA_TOOLKIT_TARGET_NAME}" CACHE PATH "CUDA Toolkit target location.")
Modules/FindCUDA.cmake:set(CUDA_TOOLKIT_TARGET_DIR_INTERNAL "${CUDA_TOOLKIT_TARGET_DIR}" CACHE INTERNAL
As result upon reconfiguring a project from which CUDA_TOOLKIT_TARGET_DIR was set by the non-cached set, the lines:
if(NOT "${CUDA_TOOLKIT_TARGET_DIR}" STREQUAL "${CUDA_TOOLKIT_TARGET_DIR_INTERNAL}")
cuda_unset_include_and_libraries()
endif()
are always triggered.
In our particular case, this means that the customization of CUDA_USE_STATIC_CUDA_RUNTIME is forgotten.
So I propose the patch:
diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake
index a4dca54..c894c84 100644
--- a/Modules/FindCUDA.cmake
+++ b/Modules/FindCUDA.cmake
@@ -641,7 +641,7 @@ if(NOT CUDA_TOOLKIT_ROOT_DIR AND NOT CMAKE_CROSSCOMPILING)
string(REGEX REPLACE "[/\\\\]?bin[64]*[/\\\\]?$" "" CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR})
# We need to force this back into the cache.
set(CUDA_TOOLKIT_ROOT_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "Toolkit location." FORCE)
- set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR})
+ set(CUDA_TOOLKIT_TARGET_DIR ${CUDA_TOOLKIT_ROOT_DIR} CACHE PATH "CUDA Toolkit target location.")
endif()
if (NOT EXISTS ${CUDA_TOOLKIT_ROOT_DIR})
Thanks, Philippe Canal.