cmake не может найти библиотеку при связывании библиотеки с другим приложением - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать общую библиотеку существующего приложения, чтобы связать ее с приложением 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})

После компиляции libaudiodLib.so создается в каталоге / usr / lib. И теперь, если я пытаюсь получить доступ к audiodLib в моем коде gtest, например:

##${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 дня.

1 Ответ

0 голосов
/ 17 февраля 2020

Большое спасибо за предложения и советы, я наконец смог решить проблему. Что касается проблемы с не найденной библиотекой, я решил ее, переставив 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
                )

И как я решил BAD RPATH Error во время do_package_qa, я уже ответил здесь: bitbake do_package_qa проблема содержит плохая RPATH

...