gpt4 book ai didi

linker - CMake : FIND_LIBRARY problem

转载 作者:行者123 更新时间:2023-12-02 08:57:34 26 4
gpt4 key购买 nike

我的目标是通过 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})

但是 CMake 没有找到任何东西。

所以我尝试(使用扩展):

    FIND_LIBRARY(BOINC_LIBRARY NAMES libboinc_api.a libboinc.a
DOC "The Boinc libraries")
MESSAGE(${BOINC_LIBRARY})

消息给了我/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")

可能是相反的顺序。

关于linker - CMake : FIND_LIBRARY problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com