将库链接到另一个应用程序时,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})
编译后,libaudiodLib.so 生成在/usr/lib 目录中。 现在,如果我尝试在我的 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期间解决错误的 RPATH 错误,我已经在这里回答了: 位烘焙do_package_qa问题包含错误的 RPATH
相关文章:
- 将库链接到另一个应用程序时,CMAKE 找不到库
- CMake 找不到变量或目录
- Cmake 找不到创建的库 (libgps)
- CMake 找不到请求的 Boost 库
- CMake 找不到带有 brew boost_python lib (macOS)
- Cmake找不到"openssl" "libcrypto" pkg_search_module
- 为什么Cmake找不到编译器CL
- CMake 找不到旧版库
- C++ CMake 找不到 Boost 1.63(使用 CLion IDE)
- 为什么 CMAKE 找不到这些变量?
- CMake 找不到源文件,即使它位于正确的位置
- cmake 找不到随 vcpkg 一起安装的库
- CMake 找不到与 "Unix Makefiles" 对应的构建程序
- cmake找不到Gurobi外部库
- Cmake找不到boost库文件,线程,date_time,iostreams,system
- CMake 找不到提升。
- Cmake找不到提升
- Cmake找不到OpenCV库
- Cmake 找不到提升文件夹
- CMake 找不到特定的提升库 (boost_random)