在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。
答案 0 :(得分:2)
使用find_library
。
您应该只提供库的名称以及可能找到它的(可能是可配置的)位置列表,而不是硬编码完整路径,并让find_library
完成其余的工作。如果成功,find_library
调用的结果可以直接输入target_link_libraries
。