我的项目链接到一个第三方库,该库附带一个valgrind抑制文件和一个CMake脚本。该脚本将抑制文件的位置存储在CMake缓存变量中。
我已经编写了一个CTest脚本,它在我的项目上运行连续测试并提交到仪表板。我想在内存检查阶段使用抑制文件。不幸的是,CTest脚本似乎对CMake缓存一无所知。如何从我的CTest脚本访问CMake缓存变量?
发布于 2012-08-24 22:41:29
您不能直接从ctest -S脚本访问CMake缓存变量。
但是,您可以:
信息的迷你脚本
对于(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发布于 2012-08-24 21:59:54
测试应该通过命令ADD_TEST()在您的CMakeLists.txt文件中配置。然后,CTest脚本只需调用ctest_test()来运行所有已配置的测试。通过这种方式,您可以访问缓存变量,而且您可以在任何时候运行make test来运行测试。保存用于夜间测试和/或仪表板提交的CTest脚本。
https://stackoverflow.com/questions/12108741
复制相似问题