【发布时间】:2021-03-29 00:01:22
【问题描述】:
Myproject/CMakeLists.txt:
find_package(Foo 2.0 EXACT REQUIRED)
Foo/CMakeLists.txt:
set(Foo_SOVERSION 1)
set(Foo_VERSION ${Foo_SOVERSION}.8)
为什么cmake Myproject 不会失败?它只通知
-- Found Foo: /usr/local/lib/libfoo.so (Required is exact version "2.0")
并且愉快地继续。如果不满足确切要求,如何强制终止?
【问题讨论】:
-
你生成版本文件了吗? (见
WRITE_BASIC_PACKAGE_VERSION_FILE -
否,并且没有找到对该机制的简明描述。从你指出的页面我什至不明白
WRITE_BASIC_PACKAGE_VERSION_FILE是否需要添加到Myproject或Foo。 -
你需要将其添加到 Foo
-
这意味着此解决方案仅适用于我控制下的依赖包?
-
CMake doc of command find_package 建议尽可能使用模块模式。但是
WRITE_BASIC_PACKAGE_VERSION_FILE写入的ConfigVersion文件只能在Config模式下读取。
标签: cmake