首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RtAudio将CMakeLists链接到另一个项目

使用RtAudio将CMakeLists链接到另一个项目
EN

Stack Overflow用户
提问于 2018-06-21 03:47:09
回答 1查看 788关注 0票数 0

我正在尝试使用RtAudio来生成流音频。然而,当我试图包含"RtAudio.h“文件时,程序总是抱怨一些奇怪的东西。我的项目结构如下:

  • 项目
    • Rt音频
      • CMakeList1
      • RtAudio.h

代码语言:javascript
复制
- demos  
    - main.cpp
    - CMakeList2

代码语言:javascript
复制
- CMakeList

基本上,rt音频文件夹是我从这里安装的存储库,CMakeList1也是从那里安装的。

主文件夹下的CMakeList:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8)
# Add -Wall and -Wextra. Also,
# treat C/C++ warnings as errors if -DADM_FATAL_WARNINGS=ON.
include (cmake/FatalWarnings.cmake)
ADM_EXTRA_WARNINGS()
add_subdirectory(demos)

CMakeList2:

代码语言:javascript
复制
project(malos_service C CXX)
cmake_minimum_required(VERSION 2.8)
add_definitions(-std=c++11)
FIND_LIBRARY(WIRINGPI_LIB NAMES wiringPi) 
....

set(AUDIO_LIBRARY_FOUND OFF)
find_path(RTAUDIO_HEADER_PATH "RtAudio.h" HINTS ../rtaudio)
if(RTAUDIO_HEADER_PATH)
    message(STATUS "Compiling provided rtaudio-library!")
    add_subdirectory(../rtaudio rtaudio)
    add_definitions(-DRTAUDIO_HEADER="../rtaudio/RtAudio.h")
    set(AUDIO_LIBRARY_FOUND ON)
endif()
if (NOT AUDIO_LIBRARY_FOUND)
    message(SEND_ERROR "no supported library")
endif()

# Check if any audio-library was added
if(NOT AUDIO_LIBRARY_FOUND)
    message(SEND_ERROR "No supported audio-library found!")
endif()
....


add_executable(...)

要编译这些文件,请在“项目”文件夹下,

代码语言:javascript
复制
mkdir build 
cd build
cmake ..
make

总的来说,我只想补充一下:

代码语言:javascript
复制
#include "../rtaudio/RtAudio.h"

在编译make之后,我会得到很多错误:

代码语言:javascript
复制
In file included from ~/Project/demos/main.cpp:7:0:
/home/pi/Downloads/Project/demos/../rtaudio/RtAudio.h:729:5: error: expected identifier before numeric constant
     OUTPUT,
     ^
/home/pi/Downloads/Project/demos/../rtaudio/RtAudio.h:729:5: error: expected ‘}’ before numeric constant
/home/pi/Downloads/Project/demos/../rtaudio/RtAudio.h:729:5: error: expected unqualified-id before numeric constant
In file included from /home/pi/Downloads/Project/demos/main.cpp:25:0:
/home/pi/Downloads/Project/demos/../rtaudio/RtAudio.h: In member function ‘bool RtApi::isStreamOpen() const’:
/home/pi/Downloads/Project/demos/../rtaudio/RtAudio.h:709:44: error: ‘stream_’ was not declared in this scope
   bool isStreamOpen( void ) const { return stream_.state != STREAM_CLOSED; }
...

*PS:如果我直接cmakert音频,rt音频下的程序都能工作,这意味着错误不应该来自rt音频* (希望如此)。

我的方式有问题吗?有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 07:46:24

您之所以得到所有这些错误,是因为您没有用项目编译来自RtAudio的源代码。您需要将RtAudio.cpp文件复制到您的项目中。看起来您使用的是raspberry pi,所以要编译您的项目,所需要做的就是设置如下文件:

代码语言:javascript
复制
- Project
  - RtAudio.h
  - RtAudio.cpp
  - main.cpp

然后,要编译,您需要运行

代码语言:javascript
复制
g++ main.cpp RtAudio.cpp -o run

就这样!假设您安装了RtAudio的依赖项,那么它应该没有问题地编译。

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

https://stackoverflow.com/questions/50960072

复制
相关文章

相似问题

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