LIBSDFILE ist eine C -Bibliothek zum Lesen und Schreiben von Dateien mit abgetasteten Audiodaten.
Das Projekt LibsndFile wurde ursprünglich von Erik de Castro Lopo [email protected] aka @erikd entwickelt und gepflegt. Das Projekt wurde auf GitHub unter https://github.com/erikd/libsndfile entwickelt.
Nach der Veröffentlichung von Version 1.0.30 überwiesen @erikd das Projekt an das LIBSndFile -Team, siehe Autoren für Details.
Das kanonische Quellcode -Repository für libsndFile finden Sie unter https://github.com/libsndfile/libsndfile.
Sie können den Quellcode mit:
git clone https://github.com/libsndfile/libsndfile.git
Für den Bau von Android siehe Buildforandroid.
Derzeit gibt es zwei Build -Systeme: das traditionelle GNU Autotool -basierte und moderne CMake -basierte Build -System. Die Verwendung des CMake -Build -Systems ist nachstehend dokumentiert.
Die Einrichtung einer Build -Umgebung für libsndfile auf Debian oder Ubuntu ist so einfach wie:
sudo apt install autoconf autogen automake build-essential libasound2-dev
libflac-dev libogg-dev libtool libvorbis-dev libopus-dev libmp3lame-dev
libmpg123-dev pkg-config python
Bei anderen Linux -Verteilungen oder einem der *BSDs sollte das Setup ähnlich sein, obwohl die Paket -Installations -Tools und -Paketnamen möglicherweise geringfügig unterschiedlich sein können.
In ähnlicher Weise ist unter der Annahme, dass das Gebräu bereits installiert ist:
brew install autoconf autogen automake flac libogg libtool libvorbis opus mpg123 pkg-config
Sobald die Build -Umgebung eingerichtet wurde, ist es so einfach:
autoreconf -vif
./configure --enable-werror
make
make check
Obwohl Autotools der primäre und empfohlene Build -Toolchain sind, ist auch der CMake -Meta -Build -Generator verfügbar. Der Build -Prozess mit CMake erfolgt in zwei Phasen. Zunächst werden Standard -Build -Dateien aus Konfigurationsskripten erstellt. Anschließend werden die nativen Build -Tools der Plattform für das eigentliche Gebäude verwendet. CMAKE kann Microsoft Visual Studio -Projekt- und Lösungsdateien, Unix Makefiles, Xcode -Projekte und vieles mehr erstellen.
Einige IDE unterstützen CMake nativ oder mit Plugins. Weitere Informationen finden Sie in der IDE -Dokumentation.
Es gibt einige empfohlene Pakete, mit denen alle Funktionen von libsndFile ermöglicht werden können:
CMAKE kann außerhalb von Platzierungen abwickeln, wodurch mehrere Builds aus demselben Quellbaum und eine Kreuzverbindung ermöglicht werden. Die Möglichkeit, einen Verzeichnisbaum außerhalb des Quellbaums zu erstellen, ist ein wichtiges Merkmal, um sicherzustellen, dass die Quelldateien unberührt bleiben, wenn ein Build -Verzeichnis entfernt wird.
mkdir CMakeBuild
cd CMakeBuild
Führen Sie dann cmake -Befehl mit Verzeichnis aus, in dem sich CMakelists.txt -Skript als Argument befindet (relative Pfade werden unterstützt):
cmake ..
In diesem Befehl konfiguriert und schreiben Sie Build -Skript oder Lösung in das CMakebuild -Verzeichnis. CMake ist intelligent genug, um Unix -Makefiles unter Linux- oder Visual Studio -Lösung zu erstellen, wenn Sie Visual Studio installiert haben. Sie können jedoch den Generator mit -G -Befehlszeilenparameter konfigurieren:
cmake .. -G"Unix Makefiles"
Das Build -Verfahren hängt vom ausgewählten Generator ab. Mit "Unix Makefiles" können Sie eingeben:
make & make install
Mit "Visual Studio" und einigen anderen Generatoren können Sie Lösung oder Projekt aus CMakeBuild -Verzeichnis öffnen und mit IDE erstellen.
Schließlich können Sie einen Unified Command verwenden:
cmake --build .
CMake bietet auch QT-basierte Cross-Plattform-GUI, CMake-Gui. Die Verwendung ist trivial und erfordert keine detaillierten Erklärungen.
Sie können zusätzliche Optionen mit /D<parameter>=<value> übergeben, wenn Sie den Befehl cmake ausführen. Einige nützliche Systemoptionen:
CMAKE_C_FLAGS - zusätzliche C -Compiler -FlagsCMAKE_BUILD_TYPE - Konfigurationstyp, DEBUG , RELEASE , RELWITHDEBINFO oder MINSIZEREL . DEBUG ist StandardCMAKE_INSTALL_PREFIX --prefix configureNützliche Libsnd -Datei -Optionen:
BUILD_SHARED_LIBS - Erstellen Sie die gemeinsame Bibliothek (DLL unter Windows), wenn ON , andernfalls erstellen Sie die statische Bibliothek. Diese Option ist standardmäßig OFF .
BUILD_PROGRAMS - Erstellen Sie die Dienstprogramme von LibsndFile aus programs/ Verzeichnissen ON .
BUILD_EXAMPLES - Beispiele erstellen, ON .
BUILD_TESTING - Erstellen Sie Tests. Anschließend können Sie ON Tests mit ctest -Befehl ausführen. Einstellen BUILD_SHARED_LIBS , um diese Option zu ON .
ENABLE_EXTERNAL_LIBS - Aktivieren Sie OGG, Vorbis, FLAC und OPUS -Unterstützung. Diese Option ist verfügbar und ON , wenn alle Abhängigkeitsbibliotheken gefunden wurden.
ENABLE_MPEG - MP3 -Unterstützung. Diese Option ist verfügbar und ON , wenn alle Abhängigkeitsbibliotheken gefunden wurden.
ENABLE_BOW_DOCS -Aktivieren Sie standardmäßig das Black-on-White-Dokumentationsthema OFF .
ENABLE_EXPERIMENTAL - Aktivieren Sie den Versuchscode. Verwenden Sie es nicht, wenn Sie sich nicht sicher sind. Diese Option ist standardmäßig OFF .
ENABLE_CPACK - Aktivieren Sie die CPACK -Unterstützung. Diese Option ist standardmäßig ON .
ENABLE_PACKAGE_CONFIG - generieren und installieren Sie die Paketkonfigurationsdatei.
INSTALL_PKGCONFIG_MODULE - generieren und installieren Sie ein PKG -Config -Modul.
INSTALL_MANPAGES - Installieren Sie MAN -Seiten für Programme. Diese Option ist standardmäßig ON
ENABLE_STATIC_RUNTIME - Aktivieren Sie statische Laufzeit auf Windows -Plattform (MSVC und Mingw) standardmäßig OFF .
Hinweis : Für MSVC -Compiler ist diese Option für CMake> = 3.15 veraltet, siehe Richtlinien CMP0091. Verwenden Sie stattdessen die Option CMAKE_MSVC_RUNTIME_LIBRARY .
Hinweis : Für Mingw Toolchain ist diese Option experimentell. Wenn Sie es aktiviert und dann erneut deaktiviert haben, müssen Sie CMake -Cache löschen (CMakeCache.txt löschen).
ENABLE_COMPATIBLE_LIBSNDFILE_NAME - setzen Sie den DLL -Namen auf libsndfile-1.dll (kanonischer Name) auf Windows -Plattform, sndfile.dll ansonsten standardmäßig OFF . Der Bibliotheksname kann je nach Plattform unterschiedlich sein. Der bekannte DLL-Name auf Windows-Plattform lautet libsndfile-1.dll , da die einzige Möglichkeit, zuvor Windows Library zu erstellen, mit Autotools mingw Toolchain war. Dieser Name ist nativ für Mingw -Ökosystem. Autotools konstruiert es mit Mingw -Plattformregeln von sndfile -Ziel. Wenn Sie jedoch mit CMake mit dem nativen Windows -Compiler erstellen, ist der Name sndfile.dll . Dies ist der Name für die native Windows -Plattform, da Windows keine Regeln für Bibliotheksnamen enthält. Es wird bevorzugt, da Sie die Bibliothek mit dem Befehl Package Manager oder CMAKes find_library auf einer beliebigen Plattform mit demselben sndfile -Namen durchsuchen können.
ENABLE_SSE2 - Compiler -Flag hinzufügen, um sse2 bei Bedarf ON zu aktivieren.
Diese Option gilt nur für X86- und GCC -kompatible Compiler -Konfigurationen.
Wenn Sie für einen anderen SIMD -Set, z. B. AVX2, kompilieren, möchten Sie möglicherweise ENABLE_SSE2 auf OFF einstellen.
Hinweis : Diese Option ist für die X64 -Konfiguration nicht aktiv, da SSE2 in diesem Modus immer verfügbar ist und alle Optimierungen standardmäßig aktiviert sind.
Veraltete Optionen:
DISABLE_EXTERNAL_LIBS - Deaktivieren Sie OGG, Vorbis und FLAC -Unterstützung. Ersetzt durch ENABLE_EXTERNAL_LIBSBUILD_STATIC_LIBS - Build statische Bibliothek. Verwenden Sie stattdessen BUILD_SHARED_LIBS Zuerst müssen Sie FindOgg.cmake , FindVorbis.cmake , FindFLAC.cmake und FindOpus.cmake -Dateien in ein Verzeichnis in Ihrem CMake -Projekt (normalerweise cmake ) hinzufügen und zu einem Verzeichnis in Ihrem CMAKE -Projekt (normalerweise CMake) hinzufügen und zu CMAKE_MODULE_PATH hinzufügen:
project(SomeApplication)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
Jetzt können Sie mit diesem Befehl die Bibliothek libsndfile von Ihren CMakeLists.txt durchsuchen:
find_package(SndFile)
SndFile_FOUND ist auf ON festgelegt, wenn die Bibliothek gefunden wird.
Wenn die Abhängigkeit libsndfile von entscheidender Bedeutung ist, können Sie hinzufügen, dass find_package REQUIRED :
find_package(SndFile REQUIRED)
Mit der Option find_package beendet der Konfigurationsprozess, wenn libsndfile nicht gefunden wird.
Sie können auch Versionsprüfung hinzufügen:
find_package(SndFile 1.0.29)
find_package meldet Fehler, wenn die Version libsndfile <1.0.29 ist.
Sie können REQUIRED und Versionen kombinieren, wenn Sie benötigen.
Um die Bibliotheksbibliothek libsndfile zu verknüpfen, verwenden Sie:
target_link_libraries(my_application PRIVATE SndFile::sndfile)
Erste Ratschläge zu Visual Studio -System -CRT -Bibliotheken, es wird Systemcode als statische oder dynamische Bibliothek für jede C -Anwendung verknüpft.
Sie finden eine verwandte Option in Visual Studio -Projekteigenschaften:
C/C++ -> Code Generation -> Runtime Library
Die dynamische Version der System -CRT -Bibliothek ist standardmäßig und bedeutet, dass der Endbenutzer dieselbe Laufzeitbibliothek auf seinem System installiert muss. Es ist höchstwahrscheinlich so, aber wenn dies nicht der Fall ist, wird der Benutzer diese Fehlermeldung mit LibndDfile DLL sehen:
"The program can't start because <crt-dll-name>.dll is missing from your computer. Try reinstalling the program to fix this problem. "
Um dies zu vermeiden, möchten Sie möglicherweise eine statische CRT -Bibliothek verknüpfen. In diesem Fall erhöht sich die Größe Ihrer DLL geringfügig, die Größe erhöht sich geringfügig, aber Sie können die Libsndfile -DLL umverteilen, ohne die richtige Version der System -CRT -Bibliothek installieren zu müssen.
Das CMAKE -Projekt verwendet standardmäßig dynamische System -CRT -Bibliotheken, genau wie Visual Studio. Sie können es jedoch mit ENABLE_STATIC_RUNTIME oder CMAKE_MSVC_RUNTIME_LIBRARY -Optionen ändern.
Hinweis : Sie können nicht beide Optionen gleichzeitig verwenden, sondern zu einem Konfigurationsfehler.
Wenn Sie CMake> = 3.15 haben, sollten Sie die Option CMAKE_MSVC_RUNTIME_LIBRARY verwenden.
Dies ermöglicht eine statische Verknüpfung:
cmake .. -D"MultiThreaded$<$<CONFIG:Debug>:Debug>"
Sie können die Option LIBSDFILE ENABLE_STATIC_RUNTIME verwenden, um die CRT -Bibliothek zu steuern, die für CMake -Projekt verlinkt: OFF oder nicht fest (Standard) für dynamische und ON statische Verknüpfung:
cmake .. -DENABLE_STATIC_RUNTIME=ON
HINWEIS : Diese Option ist veraltet und kann in der Zukunft entfernt werden, da wir jetzt Standardoption CMAKE_MSVC_RUNTIME_LIBRARY haben.
Der zweite Rat handelt von OGG, Vorbis Flac und Opus -Unterstützung. Die Suche nach externen Bibliotheken unter Windows ist etwas schwierig. Der beste Weg ist die Verwendung von VCPKG.
Installieren Sie VCPKG und fügen Sie diesen Parameter zu CMake -Befehlszeile hinzu:
-DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake
Sie müssen außerdem VCPKG_TARGET_TRIPLET festlegen, wenn Sie statische Bibliotheken verwenden möchten:
-DVCPKG_TARGET_TRIPLET=x64-windows-static
Dann müssen Sie statische Libogg-, Libvorbis-, Libflac-, Libopus-, MPG123- und MP3Lame -VCPKG -Pakete installieren.
Nach 1.1.0beta2 müssen Sie keine Abhängigkeiten manuell installieren. LibsndFile unterstützt jetzt den VCPKG -Manifest -Modus und alle Abhängigkeiten werden automatisch installiert.
Sie können jedoch den Manifestmodus ausschalten und mit dem Parameter VCPKG_MANIFEST_MODE aus der Befehlszeile zum klassischen Modus zurückkehren:
-DVCPKG_MANIFEST_MODE=OFF
Im klassischen Modus müssen Sie die erforderlichen Bibliotheken manuell installieren:
vcpkg install libvorbis:x64-windows-static libflac:x64-windows-static
opus:x64-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static
libvorbis:x86-windows-static libflac:x86-windows-static
opus:x86-windows-static mp3lame:x86-windows-static mpg123:x86-windows-static
HINWEIS : Die Verwendung muss dieselbe CRT -Bibliothek für externe Bibliotheken und die Bibliothek der Bibliothek von Libsnd verwenden. Für *-static Triplets VCPKG verwendet statische CRT.
Weitere Informationen finden Sie unter Beitrags.md.