【发布时间】:2020-04-04 05:13:52
【问题描述】:
希望在使用时使包 foobar 打印到找到它的位置
find_package(foobar CONFIG)
我正在使用
find_package_message(foobar
"Found foobar: ${info} (version ${foobar_VERSION})"
"[${info}][${foobar_VERSION}]"
)
使用find_package_message 的想法是
打印此消息一次。
但是,我想在每次从头开始运行 cmake 时打印它。 我只想在 cmake 的同一次运行中避免重复。
find_package_message在缓存中存储一个变量(FIND_PACKAGE_MESSAGE_DETAILS_foobar)
包含上述第三个参数的值 ("[${info}][${foobar_VERSION}]") 和
当该变量不存在或更改时再次打印消息。
所以,第二次运行 cmake 的结果是什么都没有打印出来:FIND_PACKAGE_MESSAGE_DETAILS_foobar 已经存在于缓存中并且没有改变。
如何解决此问题,以便在每次 新调用 cmake 时打印一条消息?
【问题讨论】:
-
不能使用自己的变量吗?
if(NOT foobar_my_variable_message_already_printed) set(foobar_my_variable_message_already_printed TRUE) message(..) endif()? -
那不会是一个全局变量吧?因此,如果 -say- 一个子目录包含一个也执行 find_package(foobar) 的项目,该消息仍将被打印。
标签: cmake