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
)。尽管在 Makefiles 中失败了,但一些项目拥有类似的代码,并且只在 Visual Studio 和/或 Xcode 中构建。此版本的 CMake 更倾向于直接将全路径传递给本地构建工具,这在这种情况下会失败,因为它不指向一个有效的库文件。
此策略决定如何处理看起来不像有效库文件的全路径。此策略的 OLD
行为是从路径中分离库名称并要求链接器搜索它。此策略的 NEW
行为是信任给定的路径,并将其直接传递给本地构建工具,不作更改。
此策略在 CMake 2.6.1 版本中引入。在 4.0 版本中移除之前,它可以由 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。