CMP0008¶
由完整路径链接的库必须有有效的库文件名。
在 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_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。
注意
策略的 OLD
行为根据定义已被弃用
,并且可能会在未来的 CMake 版本中被移除。