使用 target_link_libraries 以绝对路径作为库路径进行平台库名称扩展?

2024-05-05

在 CMake 中使用 target_link_libraries 仅使用库名称,例如

target_link_library( myProject SomeLibrary )

将根据平台将 SomeLibrary 扩展为 SomeLibrary.lib、libSomeLibrary.so 等。但是,如果指定了完整路径,则库名称不会根据平台进行扩展,例如

target_link_library( myProject ${myProject_SOURCE_DIR}/libs/SomeLibrary )

如何获得基于平台扩展的库名称?目前,我正在检测脚本中的平台并自己调整库名称,这感觉有点难看。

(背景:上这个问题 https://stackoverflow.com/questions/25164041/is-there-a-link-directories-or-equivilent-property-in-cmake建议我在指定库时使用绝对路径而不是使用 link_directories)


Use find_library http://www.cmake.org/cmake/help/v3.0/command/find_library.html.

您不应硬编码完整路径,而应仅提供库的名称以及可能找到并具有该库的位置列表(可能是可配置的)find_library做剩下的。如果成功的话,结果是find_library呼叫可以直接输入target_link_libraries.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 target_link_libraries 以绝对路径作为库路径进行平台库名称扩展? 的相关文章

随机推荐