diff options
author | Marc Chevrier <marc.chevrier@gmail.com> | 2021-06-01 14:05:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2021-06-02 18:55:00 (GMT) |
commit | 87b71eec6257b0d9c43b446205d61f334278fe7d (patch) | |
tree | 727adaa232629c537ca47112fbc3f7fbeec36127 /Tests/RunCMake/find_program | |
parent | 2104cfe388f5d77b98727c89edff453b1d23fed6 (diff) | |
download | CMake-87b71eec6257b0d9c43b446205d61f334278fe7d.zip CMake-87b71eec6257b0d9c43b446205d61f334278fe7d.tar.gz CMake-87b71eec6257b0d9c43b446205d61f334278fe7d.tar.bz2 |
find_*: Add support for option NO_CACHE
Request that find result is stored in a normal variable rather than a
cache entry.
Fixes: #20687
Issue: #20743
Diffstat (limited to 'Tests/RunCMake/find_program')
-rw-r--r-- | Tests/RunCMake/find_program/NO_CACHE-stdout.txt | 18 | ||||
-rw-r--r-- | Tests/RunCMake/find_program/NO_CACHE.cmake | 130 | ||||
-rw-r--r-- | Tests/RunCMake/find_program/RunCMakeTest.cmake | 1 |
3 files changed, 149 insertions, 0 deletions
diff --git a/Tests/RunCMake/find_program/NO_CACHE-stdout.txt b/Tests/RunCMake/find_program/NO_CACHE-stdout.txt new file mode 100644 index 0000000..c235d81 --- /dev/null +++ b/Tests/RunCMake/find_program/NO_CACHE-stdout.txt @@ -0,0 +1,18 @@ +-- PROG_A='.+/Tests/RunCMake/find_program/A/testA' +-- PROG_AandB='PROG_AandB-NOTFOUND' +--[ ]+ +-- Policy CMP0125 = OLD +-- CACHED PROG_cache='unknown' +-- PROG_cache='unknown' +-- CACHED PROG_cache='testA' +-- PROG_cache='testA' +-- CACHED PROG_cache='testA' +-- PROG_cache='testA' +--[ ]+ +-- Policy CMP0125 = NEW +-- CACHED PROG_cache='unknown' +-- PROG_cache='unknown' +-- CACHED PROG_cache='testA' +-- PROG_cache='testA' +-- CACHED PROG_cache='testA' +-- PROG_cache='.+/Tests/RunCMake/find_program/NO_CACHE-build/testA' diff --git a/Tests/RunCMake/find_program/NO_CACHE.cmake b/Tests/RunCMake/find_program/NO_CACHE.cmake new file mode 100644 index 0000000..77a0582 --- /dev/null +++ b/Tests/RunCMake/find_program/NO_CACHE.cmake @@ -0,0 +1,130 @@ +find_program(PROG_A + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (DEFINED CACHE{PROG_A}) + message(SEND_ERROR "Cache variable defined: PROG_A") +endif() +message(STATUS "PROG_A='${PROG_A}'") + + +find_program(PROG_AandB + NAMES testAandB + NO_CACHE + ) +if (DEFINED CACHE{PROG_AandB}) + message(SEND_ERROR "Cache variable defined: PROG_AandN") +endif() +message(STATUS "PROG_AandB='${PROG_AandB}'") + + +cmake_policy(SET CMP0125 OLD) +message(STATUS "") +message(STATUS "Policy CMP0125 = OLD") +file(REMOVE "${CMAKE_BINARY_DIR}/testA") + +set(PROG_cache "unknown" CACHE FILEPATH "") +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") + + +set(PROG_cache "testA" CACHE FILEPATH "") +unset(PROG_cache) +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") + + +set(PROG_cache "testA" CACHE FILEPATH "") +unset(PROG_cache) +# simulate cache variable defined in command line +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/A/testA" DESTINATION "${CMAKE_BINARY_DIR}") +set_property(CACHE PROG_cache PROPERTY TYPE UNINITIALIZED) +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") + + +cmake_policy(SET CMP0125 NEW) +message(STATUS "") +message(STATUS "Policy CMP0125 = NEW") +file(REMOVE "${CMAKE_BINARY_DIR}/testA") + +set(PROG_cache "unknown" CACHE FILEPATH "") +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") + + +set(PROG_cache "testA" CACHE FILEPATH "") +unset(PROG_cache) +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") + + +set(PROG_cache "testA" CACHE FILEPATH "") +unset(PROG_cache) +# simulate cache variable defined in command line +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/A/testA" DESTINATION "${CMAKE_BINARY_DIR}") +set_property(CACHE PROG_cache PROPERTY TYPE UNINITIALIZED) +find_program(PROG_cache + NAMES testA + PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A + NO_CACHE + NO_DEFAULT_PATH + ) +if (NOT DEFINED CACHE{PROG_cache}) + message(SEND_ERROR "Cache variable not defined: PROG_cache") +endif() +message(STATUS "CACHED PROG_cache='$CACHE{PROG_cache}'") +unset(PROG_cache CACHE) +message(STATUS "PROG_cache='${PROG_cache}'") diff --git a/Tests/RunCMake/find_program/RunCMakeTest.cmake b/Tests/RunCMake/find_program/RunCMakeTest.cmake index 77c021d..34edc19 100644 --- a/Tests/RunCMake/find_program/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_program/RunCMakeTest.cmake @@ -5,6 +5,7 @@ run_cmake(DirsPerName) run_cmake(NamesPerDir) run_cmake(RelAndAbsPath) run_cmake(Required) +run_cmake(NO_CACHE) if(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$") run_cmake(WindowsCom) |