ctest -S スクリプトから CMake キャッシュ変数に直接アクセスすることはできません。
ただし、次の可能性があります。
- ctest -S スクリプトに「include」を使用してサード パーティの CMake スクリプトを含めます (更新手順の後、ソース ツリーは最新になります)。
- 構成ステップの後に CMakeCache.txt ファイルを読み取って、対象のキャッシュ変数を引き出します。
- CMakeLists.txt ファイルにコードを追加して、探している情報だけを含むミニスクリプトを書き出す
(1) の場合、コードは次のようになります。
include(${CTEST_SOURCE_DIRECTORY}/path/to/3rdParty/script.cmake)
これは、スクリプトが参照可能な変数値の設定などの単純なことのみを実行する場合にのみ、現実的に可能になります。find_library や add_executable などの CMake-configure-time を行う場合は、これを行うべきではありません。
(2) の場合:
file(STRINGS ${CTEST_BINARY_DIRECTORY}/CMakeCache.txt result
REGEX "^CURSES_LIBRARY:FILEPATH=(.*)$")
message("result='${result}'")
string(REGEX REPLACE "^CURSES_LIBRARY:FILEPATH=(.*)$" "\\1"
filename "${result}")
message("filename='${filename}'")
(3) の場合:
CMakeLists.txt ファイル内:
file(WRITE "${CMAKE_BINARY_DIR}/mini-script.cmake" "
set(supp_file \"${supp_file_location}\")
")
ctest -S スクリプトで、ctest_configure 呼び出しの後:
include("${CTEST_BINARY_DIRECTORY}/mini-script.cmake")
message("supp_file='${supp_file}'")
# use supp_file as needed in the rest of your script