专业的编程技术博客社区

网站首页 > 博客文章 正文

CMake中find_path / find_library对于cache变量的选择

baijin 2024-10-12 02:13:10 博客文章 20 ℃ 0 评论

CMake中find_path / find_library对于cache变量的选择


默认情况下,所有的变量都是非cache的。


我们先来看看什么叫cache变量。

cache变量分为internal(你不能通过ccmake去编辑), external(可以通过ccmake,并且有type和documents介绍)


同时external变量还能被设置成advanced(隐藏),因此他们只能在ccmake的advanced中被查看到。同样再次强调一下:

默认情况下,所有的变量都是非cache的。


但是大家都知道find_path / find_library这种detection的是比较浪费资源的,为了保存这些资源,同时还能开放给用户可以直接在ccmake中做修改。find_path / find_library会cache他们的变量。


find_path / find_library会cache他们的变量。只有当他们的变量已经被设置成一个有效值的时候(不是各种-NOTFOUND, undefined),在这种情况下,一旦被cache住,你再去调用,这些函数就不会做任何事情,仍然只会保留老的value.


同样的pkg_check_modules也做了cache工作,只是他是internal caching,因此你在ccmake中是不能编辑的,但是他保证了你的pkg_check_modules不会每次都傻傻的重新运行。


与此同时,find module中的output values是不会被cache的(_FOUND, _INCLUDE_DIRS, _LIBRARIES),因为如果这样的话,那么即使你修改其他cache变量,这些output的vaiables也不会做更新(因为已经被cache住了),这明显不是一个希望的结果。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表