CMP0008¶
警告
此策略的 OLD 行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required() 或 cmake_policy() 来设置为 NEW。
通过完整路径链接的库必须具有有效的库文件名。
在 CMake 2.4 及更早版本中,可以编写如下代码
target_link_libraries(myexe /full/path/to/somelib)
其中 somelib 应该是一个有效的库文件名,例如 libsomelib.a 或 somelib.lib。对于 Makefile 生成器,这会在构建时产生错误,因为无法找到对完整路径的依赖。对于 Visual Studio 生成器 IDE 和 Xcode 生成器,这曾经可以意外地工作,因为 CMake 总是会分离库目录并要求链接器按名称搜索库(-lsomelib 或 somelib.lib)。尽管 Makefile 失败了,但有些项目具有这样的代码,并且仅使用 Visual Studio 和/或 Xcode 构建。此版本的 CMake 倾向于将完整路径直接传递给本机构建工具,在这种情况下,由于它没有命名有效的库文件,因此会失败。
此策略确定如何处理不指向有效库文件的完整路径。此策略的 OLD 行为是从路径中分离库名称并要求链接器搜索它。此策略的 NEW 行为是信任给定的路径并将其原样传递给本机构建工具。
此策略是在 CMake 2.6.1 版本中引入的。在 CMake 4.0 版本中移除之前,可以通过 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake 会发出警告,并使用 OLD 行为。