我的目标是通过CMake链接库/usr/lib/libboinc_api.a和/usr/lib/libboinc.a.所以我使用不同FIND_XXXX模块中给出的示例,我尝试:
FIND_LIBRARY(BOINC_LIBRARY NAMES libboinc_api libboinc
DOC "The Boinc libraries")
MESSAGE(${BOINC_LIBRARY})
Run Code Online (Sandbox Code Playgroud)
但是CMake没有找到任何东西.
所以我尝试(使用扩展名):
FIND_LIBRARY(BOINC_LIBRARY NAMES libboinc_api.a libboinc.a
DOC "The Boinc libraries")
MESSAGE(${BOINC_LIBRARY})
Run Code Online (Sandbox Code Playgroud)
并且消息给了我/usr/lib/libboinc_api.a.
所以我的问题是:
1)为什么我被迫精确扩展(在cmake FIND模块中,没有精确的扩展)以及如何避免这种情况?
2)如何链接这两个文件?(在目前的情况下,消息说只找到第一个,但也许我误解了......)
非常感谢你.
这里有几个错误:首先,NAMES之后的参数将被视为要搜索的替代库.所以如果找不到libboinc_api,它会在失败之前尝试libboinc.所以你应该两次运行FIND_LIBRARY,每个库一个.
其次,您需要指定库的名称,因为它将提供给链接器的-l选项,即您应该只使用boinc_api而不是libboinc_api,或者它是第二次尝试时的完整文件名.
在原始尝试的情况下,cmake将尝试查找liblibboinc_api.so,liblibboinc_api.a,使liblibboinc.so失败,最后是liblibboinc.a.
试试这个:
FIND_LIBRARY(BOINC_LIBRARY_API NAMES boinc_api
DOC "The Boinc API library")
FIND_LIBRARY(BOINC_LIBRARY NAMES boinc
DOC "The Boinc library")
Run Code Online (Sandbox Code Playgroud)
可能是以相反的顺序.
| 归档时间: |
|
| 查看次数: |
7009 次 |
| 最近记录: |