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

时间:2014-08-21 10:23:48

标签: cmake

在CMake中使用target_link_libraries只包含库名称,例如

target_link_library( myProject SomeLibrary )

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

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

如何根据平台获取要扩展的库名?目前,我正在检测脚本中的平台并自行调整库名称,感觉有点难看。

(背景:结束this question我建议在指定库时使用绝对路径而不是使用link_directories。

1 个答案:

答案 0 :(得分:2)

使用find_library

您应该只提供库的名称以及可能找到它的(可能是可配置的)位置列表,而不是硬编码完整路径,并让find_library完成其余的工作。如果成功,find_library调用的结果可以直接输入target_link_libraries