首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从CTest脚本访问CMake缓存变量

从CTest脚本访问CMake缓存变量
EN

Stack Overflow用户
提问于 2012-08-24 19:40:54
回答 2查看 978关注 0票数 4

我的项目链接到一个第三方库,该库附带一个valgrind抑制文件和一个CMake脚本。该脚本将抑制文件的位置存储在CMake缓存变量中。

我已经编写了一个CTest脚本,它在我的项目上运行连续测试并提交到仪表板。我想在内存检查阶段使用抑制文件。不幸的是,CTest脚本似乎对CMake缓存一无所知。如何从我的CTest脚本访问CMake缓存变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-24 22:41:29

您不能直接从ctest -S脚本访问CMake缓存变量。

但是,您可以:

  1. 使用"include“将第三方CMake脚本包含在ctest -S脚本中(在更新步骤之后,因此源代码树是最新的)
  2. 在配置步骤之后读取CMakeCache.txt文件,以取出感兴趣的缓存变量
  3. 将代码添加到CMakeLists.txt文件中,以写出仅包含您正在查找的

信息的迷你脚本

对于(1),代码类似于:

代码语言:javascript
复制
include(${CTEST_SOURCE_DIRECTORY}/path/to/3rdParty/script.cmake)

只有当脚本只做一些简单的事情,比如设置您可以引用的变量值时,这才是可能的。如果它做了任何像find_library或add_executable这样的CMake-configure-time的事情,那么你就不应该这么做。

对于(2):

代码语言:javascript
复制
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文件中:

代码语言:javascript
复制
file(WRITE "${CMAKE_BINARY_DIR}/mini-script.cmake" "
  set(supp_file \"${supp_file_location}\")
")

在您的ctest -S脚本中,在ctest_configure调用之后:

代码语言:javascript
复制
include("${CTEST_BINARY_DIRECTORY}/mini-script.cmake")
message("supp_file='${supp_file}'")
# use supp_file as needed in the rest of your script
票数 3
EN

Stack Overflow用户

发布于 2012-08-24 21:59:54

测试应该通过命令ADD_TEST()在您的CMakeLists.txt文件中配置。然后,CTest脚本只需调用ctest_test()来运行所有已配置的测试。通过这种方式,您可以访问缓存变量,而且您可以在任何时候运行make test来运行测试。保存用于夜间测试和/或仪表板提交的CTest脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12108741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档