簡體   English   中英

將庫鏈接到另一個應用程序時,cmake 找不到庫

[英]cmake cannot find library when linking library to another application

我正在嘗試生成現有應用程序的共享庫,以便我可以將其鏈接到 gtest 應用程序。 我的主要應用程序 cmake 文件如下所示:

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,如下所示:

##${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
    )

我收到以下錯誤:

cannot find -laudiodLib

文件夾結構如下:

audiod/
CMakeList
    |src
|tests
    CMakelist

如果有人能指出我做錯了什么,那將有很大幫助。 在這上面花了 2-3 天后,我有點卡住了,一無所知。

非常感謝您為我提供建議和指點,我終於能夠解決問題了。 關於未找到庫的問題,我通過如下重新排列 TARGET_LINK_LIBRARIES 來解決它:

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 期間解決 BAD RPATH 錯誤,我已經在這里回答了: bitbake do_package_qa issue contains bad RPATH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM