我正在尝试在我的项目中使用RtAudio。我通过执行以下命令来安装它:
git clone ...cmake -B target -D CMAKE_PREFIX_PATH=$HOME/.localcmake --build targetcmake --install targetPKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig pkg-config --cflags --libs rtaudio
返回
-pthread -I$HOME/.local/include/rtaudio -D__UNIX_JACK__ -D__LINUX_ALSA__ -D__LINUX_PULSE__ -D_REENTRANT -L$HOME/.local/lib -lrtaudio
但是当我使用以下CMakeLists.txt文件时
project(test_rtaudio)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_FIND_DEBUG_MODE ON)
add_executable(${PROJECT_NAME} main.cpp)
find_package(RtAudio REQUIRED)
message(STATUS "RtAudio include dirs : " ${RtAudio_INCLUDE_DIRS})
message(STATUS "RtAudio lib dirs :" ${RtAudio_LIBS})
include_directories(${RtAudio_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${RtAudio_LIBS})找到了RtAudioConfig.cmake,但是没有INCLUDE_DIRS或LIBS
CMake Debug Log at $HOME/.local/share/rtaudio/RtAudioConfig.cmake:26 (find_package):
find_package considered the following paths for FindThreads.cmake:
The file was found at
/usr/share/cmake/Modules/FindThreads.cmake
Call Stack (most recent call first):
CMakeLists.txt:8 (find_package)
CMake Debug Log at CMakeLists.txt:8 (find_package):
find_package considered the following paths for FindRtAudio.cmake:
/usr/share/cmake/Modules/FindRtAudio.cmake
The file was not found.
$HOME/.local/share/rtaudio/RtAudioConfig.cmake
-- RtAudio include dirs :
-- RtAudio lib dirs :
-- Configuring done
-- Generating done
-- Build files have been written to: $HOME/Documents/project/sandbox/rtaudio/targetCMake在寻找pthread库时实际上找到了pthread。
当我试图编译我的项目时,没有错误,但是当我试图编译我的项目时,没有包含或库文件:
cmake --build target
FAILED: CMakeFiles/test_rtaudio.dir/main.o
/usr/bin/c++ -std=gnu++17 -MD -MT CMakeFiles/test_rtaudio.dir/main.o -MF CMakeFiles/test_rtaudio.dir/main.o.d -o CMakeFiles/test_rtaudio.dir/main.o -c $HOME/Documents/project/sandbox/rtaudio/main.cpp
$HOME/Documents/project/sandbox/rtaudio/main.cpp:47:10: erreur fatale: RtAudio.h : Aucun fichier ou dossier de ce type
47 | #include <RtAudio.h>
| ^~~~~~~~~~~
ninja: build stopped: subcommand failed.找不到RtAudio.h。
NB :,我已经尝试在默认位置安装库,并且发生了相同的错误。
我不是一个专业的CMake用户,我无法确定我的项目中是否有未完成的配置,或者在构建或安装RtAudio时缺少配置。
如果有人有解决办法或任何想法
发布于 2022-11-11 17:12:55
调用find_package(RtAudio)实际上创建了导入的目标RtAudio::rtaudio,因此您可以简单地链接到该目标:
find_package(RtAudio REQUIRED)
...
target_link_libraries(${PROJECT_NAME} RtAudio::rtaudio)不知道为什么他们没有在他们的文档中提到这个。
或者,可以使用pkg-config提取包的属性:
find_package(PkgConfig REQUIRED)
pkg_check_modules(RtAudio REQUIRED IMPORTED_TARGET rtaudio)
...
target_link_libraries(${PROJECT_NAME} PkgConfig::RtAudio)(关于在CMake中使用pkg-config的更多信息,可以在那个问题中找到。
https://stackoverflow.com/questions/74405029
复制相似问题