From 7f56ede91676a0cf88a3af5349de5a2f59e63af1 Mon Sep 17 00:00:00 2001 From: Sam Perry Date: Mon, 4 Jul 2016 22:47:37 +0100 Subject: [PATCH] Added check for libsndfile library to cmake --- CMakeLists.txt | 4 ++++ cmake/Modules/FindLibSndFile.cmake | 34 ++++++++++++++++++++++++++++++ include/AudioFile.h | 21 ++++++++++++++++++ src/AudioFile.cpp | 30 +++++++++++++++++--------- 4 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 cmake/Modules/FindLibSndFile.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c7fd80..81c61c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,9 +3,12 @@ set(CMAKE_CXX_STANDARD 11) # Set the project name project (concatenator) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") + ############################################################################### ### Boost Settings find_package(Boost 1.60.0 COMPONENTS program_options log log_setup thread date_time filesystem system REQUIRED) +find_package(LibSndFile REQUIRED) if (NOT FO_BOOST_STATIC_LINK) add_definitions(-DBOOST_ALL_NO_LIB -DBOOST_ALL_DYN_LINK -DBOOST_LOG_DYN_LINK) @@ -48,6 +51,7 @@ set(CONCATENATOR_TEST_SOURCES include_directories(${CONCATENATOR_INCLUDE_DIR}) include_directories(${Boost_INCLUDE_DIRS}) +include_directories(${LIBSNDFILE_INCLUDE_DIR}) add_subdirectory(external) add_executable(concatenator ${CONCATENATOR_SOURCE_FILES} ${CONCATENATOR_HEADER_FILES}) diff --git a/cmake/Modules/FindLibSndFile.cmake b/cmake/Modules/FindLibSndFile.cmake new file mode 100644 index 0000000..0d4e5dc --- /dev/null +++ b/cmake/Modules/FindLibSndFile.cmake @@ -0,0 +1,34 @@ +# - Try to find libsndfile +# Once done, this will define +# +# LIBSNDFILE_FOUND - system has libsndfile +# LIBSNDFILE_INCLUDE_DIRS - the libsndfile include directories +# LIBSNDFILE_LIBRARIES - link these to use libsndfile + +# Use pkg-config to get hints about paths +find_package(PkgConfig QUIET) +if(PKG_CONFIG_FOUND) + pkg_check_modules(LIBSNDFILE_PKGCONF sndfile) +endif(PKG_CONFIG_FOUND) + +# Include dir +find_path(LIBSNDFILE_INCLUDE_DIR + NAMES sndfile.h + PATHS ${LIBSNDFILE_PKGCONF_INCLUDE_DIRS} +) + +# Library +find_library(LIBSNDFILE_LIBRARY + NAMES sndfile libsndfile-1 + PATHS ${LIBSNDFILE_PKGCONF_LIBRARY_DIRS} +) + +find_package(PackageHandleStandardArgs) +find_package_handle_standard_args(LibSndFile DEFAULT_MSG LIBSNDFILE_LIBRARY LIBSNDFILE_INCLUDE_DIR) + +if(LIBSNDFILE_FOUND) + set(LIBSNDFILE_LIBRARIES ${LIBSNDFILE_LIBRARY}) + set(LIBSNDFILE_INCLUDE_DIRS ${LIBSNDFILE_INCLUDE_DIR}) +endif(LIBSNDFILE_FOUND) + +mark_as_advanced(LIBSNDFILE_LIBRARY LIBSNDFILE_LIBRARIES LIBSNDFILE_INCLUDE_DIR LIBSNDFILE_INCLUDE_DIRS) diff --git a/include/AudioFile.h b/include/AudioFile.h index e69de29..1397e02 100644 --- a/include/AudioFile.h +++ b/include/AudioFile.h @@ -0,0 +1,21 @@ +#include +#include + +class AudioFile { + public: + AudioFile(const char * fname, bool open=true); + AudioFile(const char * fname, int format, int channels, int samplerate); + ~AudioFile(); + void swap_mode(std::string m); + bool is_open() { return open; }; + private: + std::string mode; + std::string name; + bool open; + SndfileHandle file; +}; + +class AnalysedAudioFile : public AudioFile { + public: + private: +}; diff --git a/src/AudioFile.cpp b/src/AudioFile.cpp index 20348cb..209db12 100644 --- a/src/AudioFile.cpp +++ b/src/AudioFile.cpp @@ -1,12 +1,22 @@ -#include +#include "AudioFile.h" +#include +using namespace std; -class AudioFile { - public: - private: - SndfileHandle file; -}; +AudioFile::AudioFile(const char * fname, bool open) +{ + if(open) { + file = SndfileHandle(fname); + } + name = fname; +} + +AudioFile::AudioFile(const char * fname, const int format, const int channels, const int samplerate) +{ + +} + +void AudioFile::swap_mode(string m) +{ + +} -class AnalysedAudioFile : public AudioFile { - public: - private: -};