首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将库链接到其他应用程序时,cmake找不到库

将库链接到其他应用程序时,cmake找不到库
EN

Stack Overflow用户
提问于 2020-02-10 13:21:19
回答 1查看 155关注 0票数 0

我正在尝试生成一个现有应用程序的共享库,这样我就可以将它链接到gtest应用程序。我的主要应用程序cmake文件如下所示:

代码语言:javascript
复制
project(audiodLib CXX C)
cmake_minimum_required(VERSION 2.8.7)

## Lets store all the source code in ${SOURCES}
file(GLOB SOURCES src/*.cpp src/controls/*.cpp src/controls/pulse/*.cpp src/modules/*.cpp src/product/*.cpp src/umi/*.cpp src/umi/modules/*.cpp src/umi/soundSettings/*.cpp src/utils/*.cpp utils/*.cpp pmtrace/*.c)

##Lets generate the library
##Please note, here instead of ${SOURCES} if i try to directly add source code, I always get
##an error saying that cmake could not find any *.cpp files
add_library(audiodLib SHARED ${SOURCES})

##Lets link it with libraries
target_link_libraries(audiodLib     ${GLIB2_LDFLAGS}
                ${LUNASERVICE_LDFLAGS}
                ${PBNJSON_C_LDFLAGS}
                ${LUNAPREFS_LDFLAGS}
                ${POWERD_LDFLAGS}
                ${PMLOGLIB_LDFLAGS}
                ${NYXLIB_LDFLAGS}
                ${LIBPBNJSON_LDFLAGS}
                ${PULSE_LDFLAGS}
                ${LTTNG_UST_LDFLAGS}
                ${URCU_BP_LDFLAGS}
                ${PULSE_SIMPLE_LDFLAGS}
                ${WEBOSI18N_LDFLAGS}
                pthread
                rt
                dl
                -lsnapshot-boot
                )

##Lets make this library availabel for other modules
install(TARGETS audiodLib LIBRARY DESTINATION ${WEBOS_INSTALL_LIBDIR})

编译完成后,会在/usr/lib目录下生成libaudiodLib.so。现在,如果我尝试在gtest代码中访问audiodLib,如下所示:

代码语言:javascript
复制
##${WEBOS_INSTALL_LIBDIR} = /usr/lib/
include_directories(${WEBOS_INSTALL_LIBDIR})
target_link_libraries(${GTEST_EXECUTABLE}
    ${WEBOS_GTEST_LIBRARIES}
    ${GLIB2_LDFLAGS}
    ${LUNASERVICE_LDFLAGS}
    ${PBNJSON_C_LDFLAGS}
    ${LUNAPREFS_LDFLAGS}
    ${POWERD_LDFLAGS}
    ${PMLOGLIB_LDFLAGS}
    ${NYXLIB_LDFLAGS}
    ${LIBPBNJSON_LDFLAGS}
    ${PULSE_LDFLAGS}
    ${LTTNG_UST_LDFLAGS}
    ${URCU_BP_LDFLAGS}
    ${PULSE_SIMPLE_LDFLAGS}
    ${WEBOSI18N_LDFLAGS}
    pthread
    rt
    dl
    -lsnapshot-boot
    -laudiodLib
    )

我得到以下错误:

代码语言:javascript
复制
cannot find -laudiodLib

文件夹结构如下:

代码语言:javascript
复制
audiod/
CMakeList
    |src
|tests
    CMakelist

如果有人能指出我做错了什么,那将是很有帮助的。在这上面花了2-3天之后,我有点卡住了,毫无头绪。

EN

回答 1

Stack Overflow用户

发布于 2020-02-17 11:44:39

非常感谢你给我的建议和指点,我终于能够解决这个问题了。关于未找到库的问题,我通过重新排列TARGET_LINK_LIBRARIES解决了它,如下所示:

代码语言:javascript
复制
target_link_libraries(audiod
                audiodLib
                ${GLIB2_LDFLAGS}
                ${LUNASERVICE_LDFLAGS}
                ${PBNJSON_C_LDFLAGS}
                ${LUNAPREFS_LDFLAGS}
                ${POWERD_LDFLAGS}
                ${PMLOGLIB_LDFLAGS}
                ${NYXLIB_LDFLAGS}
                ${LIBPBNJSON_LDFLAGS}
                ${PULSE_LDFLAGS}
                ${LTTNG_UST_LDFLAGS}
                ${URCU_BP_LDFLAGS}
                ${PULSE_SIMPLE_LDFLAGS}
                ${WEBOSI18N_LDFLAGS}
                pthread
                rt
                dl
                -lsnapshot-boot
                )

以及我是如何解决do_package_qa过程中的错误的,我已经在这里回答了这个问题:bitbake do_package_qa issue contains bad RPATH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60144474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档