CMP0008

通过全路径链接的库必须具有有效的库文件名。

在 CMake 2.4 及以下版本中,可以编写如下代码

target_link_libraries(myexe /full/path/to/somelib)

其中 somelib 应该是一个有效的库文件名,例如 libsomelib.asomelib.lib。对于 Makefile 生成器,这会在构建时产生错误,因为无法找到对完整路径的依赖。对于 Visual Studio 生成器 IDE 和 Xcode 生成器,这曾经是偶然工作的,因为 CMake 总是会拆分库目录并要求链接器按名称搜索库(-lsomelib` ` ``somelib.lib)。尽管 Makefiles 失败了,一些项目有这样的代码并且只用 Visual Studio 和/或 Xcode 构建。此版本的 CMake 更喜欢将完整路径直接传递给本机构建工具,在这种情况下会失败,因为它没有命名有效的库文件。

此策略确定如何处理似乎未命名有效库文件的完整路径。此策略的“旧”行为是从路径中拆分库名称并要求链接器搜索它。此策略的“新”行为是信任给定路径并将其直接传递给本机构建工具而不更改。

此策略是在 CMake 版本 2.6.1 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。