首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用RtAudio作为CMake依赖项

如何使用RtAudio作为CMake依赖项
EN

Stack Overflow用户
提问于 2022-11-11 15:52:28
回答 1查看 35关注 0票数 0

我正在尝试在我的项目中使用RtAudio。我通过执行以下命令来安装它:

  • git clone ...
  • cmake -B target -D CMAKE_PREFIX_PATH=$HOME/.local
  • cmake --build target
  • cmake --install target

PKG_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文件时

代码语言:javascript
复制
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

代码语言:javascript
复制
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/target

CMake在寻找pthread库时实际上找到了pthread

当我试图编译我的项目时,没有错误,但是当我试图编译我的项目时,没有包含或库文件:

cmake --build target

代码语言:javascript
复制
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时缺少配置。

如果有人有解决办法或任何想法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-11 17:12:55

调用find_package(RtAudio)实际上创建了导入的目标RtAudio::rtaudio,因此您可以简单地链接到该目标:

代码语言:javascript
复制
find_package(RtAudio REQUIRED)

...

target_link_libraries(${PROJECT_NAME} RtAudio::rtaudio)

不知道为什么他们没有在他们的文档中提到这个。

或者,可以使用pkg-config提取包的属性:

代码语言:javascript
复制
find_package(PkgConfig REQUIRED)
pkg_check_modules(RtAudio REQUIRED IMPORTED_TARGET rtaudio)

...

target_link_libraries(${PROJECT_NAME} PkgConfig::RtAudio)

(关于在CMake中使用pkg-config的更多信息,可以在那个问题中找到。

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

https://stackoverflow.com/questions/74405029

复制
相关文章

相似问题

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