在哪里可以找到为Boost定义的CMake属性列表?
这行代码用于工作:在哪里可以找到为Boost定义的CMake属性列表?,boost,cmake,Boost,Cmake,这行代码用于工作: get_property(_loc TARGET Boost::Boost PROPERTY LOCATION) 但我更新了Boost,现在我得到了以下信息: get_property could not find TARGET Boost::Boost. Perhaps it has not yet been created. 因此,我猜测targetBoost::Boost不再存在,或者它没有定义LOCATION属性。我想检查调用时定义了哪些属性find\u包(Bo
get_property(_loc TARGET Boost::Boost PROPERTY LOCATION)
但我更新了Boost,现在我得到了以下信息:
get_property could not find TARGET Boost::Boost. Perhaps it has not yet been created.
因此,我猜测targetBoost::Boost
不再存在,或者它没有定义LOCATION
属性。我想检查调用时定义了哪些属性find\u包(Boost-REQUIRED-CONFIG-COMPONENTS-unit\u-test\u-framework)
,但我找不到相关信息。Boost文档中是否有CMake属性/目标名称的列表
Cmake版本:3.18.1
增强版:1.71.0
系统:Ubuntu 20.04 LTSCMake中的Boost导入目标区分大小写。注意,在CMake 3.14中,仅标题依赖项的提升目标是
Boost::Boost
此外,对于3.15及更高版本的CMake(以及更新版本的Boost),导入的目标已被替换为。看起来您应该使用这个Boost::headers
导入的目标
您可以查询CMake文档中列出的任何Boost导入目标的属性,例如
Boost::unit_test_framework
。链接的CMake文档使用Boost::
引用这些单独的Boost组件,其中
是组件之一。您使用的是哪个版本的CMake?CMake的最新版本内置了对Boost的支持,请参见:Ty:)编辑文章以添加该版本。我已经检查了此文档,但找不到任何与属性位置相关的内容:我不知道在何处/何时定义此属性,我不知道在何处定义了目标Boost::Boost,我不知道为什么在我更新Boost时它停止工作:)两个目标Boost::Boost
和Boost::headers
都给出了这个错误:INTERFACE\u库目标可能只有白名单属性。不允许使用属性“LOCATION”。
CMake文档不会为Boost::unit\u test\u framework查询返回任何结果?@ArnaudBecheler,这是因为这些导入的目标表示头,而不是特定的库。因此,目标的“位置”更加模糊。LOCATION
属性很可能只为实际包含库文件的导入目标定义。好的,我现在就知道了:)但是在我卸载/重新安装boost之前它为什么工作?我是不是因为只重新安装了header-only boost-libs而破坏了cmake代码?@ArnaudBecheler请查看我的更新回复以获得更好的解释。很难说为什么它以前能工作,因为不知道你以前使用的所有东西的版本,也看不到你正在使用的CMake代码的最小完整示例。是的,我真的很难跟踪代码/系统的功能状态并确保可重复性:'(我将此问题标记为已回答,因为您实际回答了大部分问题:)