Ссылка RtAudio в другой проект с использованием CMakeLists

Я пытаюсь использовать RtAudio для генерации потокового аудио. Однако, когда я пытаюсь включить файл «RtAudio.h», программа всегда жалуется на что-то странное. Моя структура проекта выглядит так:

  • проект
    • RTAudio
      • CMakeList1
      • RtAudio.h
    • демос
      • main.cpp
      • CMakeList2
    • CMakeList

По сути, папка rtaudio — это репозиторий, из которого я установил Вот и CMakeList1 тоже оттуда.

CMakeList под основной папкой:

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:

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(...)

Чтобы скомпилировать их, в папке Project,

mkdir build
cd build
cmake ..
make

В основном я просто добавляю:

#include "../rtaudio/RtAudio.h"

После компиляции делать, Я получу много ошибок:

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: если я непосредственно cmake rtaudio, программа под rtaudio все работает, что означает, что ошибка не должна исходить от rtaudio * (С надеждой)

Это способ, которым я cmake имеет проблему? Кто-нибудь знает, как это исправить?

0

Решение

Причина, по которой вы получаете все эти ошибки, заключается в том, что вы не компилируете исходный код из RtAudio с вашим проектом. вам нужно скопировать RtAudio.cpp файл в ваш проект. Похоже, что вы используете Raspberry Pi, так что на самом деле все, что вам нужно сделать, чтобы скомпилировать ваш проект, это настроить файлы следующим образом:

- Project
- RtAudio.h
- RtAudio.cpp
- main.cpp

затем скомпилировать, вы хотите запустить

g++ main.cpp RtAudio.cpp -o run

вот и все! при условии, что у вас установлены зависимости от RtAudio, он должен компилироваться без проблем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]