cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) # add project files set(HEADER_FILES exceptions.h mp4/mp4atom.h mp4/mp4container.h mp4/mp4ids.h mp4/mp4tag.h mp4/mp4tagfield.h mp4/mp4track.h mp4/mpeg4descriptor.h # aac/aaccodebook.h # aac/aacframe.h abstractattachment.h abstractchapter.h abstractcontainer.h abstracttrack.h adts/adtsframe.h adts/adtsstream.h aspectratio.h avc/avcconfiguration.h avc/avcinfo.h avi/bitmapinfoheader.h backuphelper.h basicfileinfo.h caseinsensitivecomparer.h mpegaudio/mpegaudioframe.h mpegaudio/mpegaudioframestream.h notification.h ogg/oggcontainer.h ogg/oggiterator.h ogg/oggpage.h ogg/oggstream.h opus/opusidentificationheader.h flac/flactooggmappingheader.h flac/flacmetadata.h flac/flacstream.h positioninset.h signature.h size.h statusprovider.h tag.h tagtarget.h tagvalue.h vorbis/vorbiscomment.h vorbis/vorbiscommentfield.h vorbis/vorbiscommentids.h vorbis/vorbisidentificationheader.h vorbis/vorbispackagetypes.h wav/waveaudiostream.h fieldbasedtag.h genericcontainer.h genericfileelement.h generictagfield.h id3/id3genres.h id3/id3v1tag.h id3/id3v2frame.h id3/id3v2frameids.h id3/id3v2tag.h localeawarestring.h margin.h matroska/matroskaid.h matroska/ebmlelement.h matroska/ebmlid.h matroska/matroskaattachment.h matroska/matroskachapter.h matroska/matroskacontainer.h matroska/matroskacues.h matroska/matroskaeditionentry.h matroska/matroskaseekinfo.h matroska/matroskatag.h matroska/matroskatagfield.h matroska/matroskatagid.h matroska/matroskatrack.h mediafileinfo.h mediaformat.h ) set(SRC_FILES mp4/mp4atom.cpp mp4/mp4container.cpp mp4/mp4ids.cpp mp4/mp4tag.cpp mp4/mp4tagfield.cpp mp4/mp4track.cpp mp4/mpeg4descriptor.cpp # aac/aaccodebook.cpp # aac/aacframe.cpp abstractattachment.cpp abstractchapter.cpp abstractcontainer.cpp abstracttrack.cpp adts/adtsframe.cpp adts/adtsstream.cpp aspectratio.cpp avc/avcconfiguration.cpp avc/avcinfo.cpp avi/bitmapinfoheader.cpp backuphelper.cpp basicfileinfo.cpp exceptions.cpp mpegaudio/mpegaudioframe.cpp mpegaudio/mpegaudioframestream.cpp notification.cpp ogg/oggcontainer.cpp ogg/oggiterator.cpp ogg/oggpage.cpp ogg/oggstream.cpp opus/opusidentificationheader.cpp flac/flactooggmappingheader.cpp flac/flacmetadata.cpp flac/flacstream.cpp signature.cpp statusprovider.cpp tag.cpp tagtarget.cpp tagvalue.cpp vorbis/vorbiscomment.cpp vorbis/vorbiscommentfield.cpp vorbis/vorbisidentificationheader.cpp wav/waveaudiostream.cpp id3/id3genres.cpp id3/id3v1tag.cpp id3/id3v2frame.cpp id3/id3v2frameids.cpp id3/id3v2tag.cpp localeawarestring.cpp matroska/ebmlelement.cpp matroska/matroskaattachment.cpp matroska/matroskachapter.cpp matroska/matroskacontainer.cpp matroska/matroskacues.cpp matroska/matroskaeditionentry.cpp matroska/matroskaid.cpp matroska/matroskaseekinfo.cpp matroska/matroskatag.cpp matroska/matroskatagfield.cpp matroska/matroskatagid.cpp matroska/matroskatrack.cpp mediafileinfo.cpp mediaformat.cpp ) set(TEST_HEADER_FILES ) set(TEST_SRC_FILES tests/cppunit.cpp tests/testfilecheck.cpp tests/overall.cpp ) set(DOC_FILES README.md ) # meta data set(META_PROJECT_NAME tagparser) set(META_PROJECT_VARNAME TAG_PARSER) set(META_APP_NAME "Tag Parser") set(META_APP_AUTHOR "Martchus") set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}") set(META_APP_DESCRIPTION "C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags") set(META_VERSION_MAJOR 6) set(META_VERSION_MINOR 2) set(META_VERSION_PATCH 2) set(META_PUBLIC_SHARED_LIB_DEPENDS c++utilities) set(META_PUBLIC_STATIC_LIB_DEPENDS c++utilities_static) set(META_PRIVATE_COMPILE_DEFINITIONS LEGACY_API) set(META_NO_TIDY ON) # find c++utilities find_package(c++utilities 4.7.0 REQUIRED) use_cpp_utilities() # find 3rd party libraries include(3rdParty) # zlib use_external_library_from_package( z ZLIB ANY_VERSION ZLIB_INCLUDE_DIRS ZLIB_LIBRARIES AUTO_LINKAGE REQUIRED ) # crypto (optional for testing integrity of testfiles) find_external_library_from_package( crypto OpenSSL ANY_VERSION OPENSSL_INCLUDE_DIR OPENSSL_CRYPTO_LIBRARY AUTO_LINKAGE OPTIONAL ) link_tests_against_library( crypto AUTO_LINKAGE OPTIONAL ) if(NOT USE_crypto) list(REMOVE_ITEM TEST_SRC_FILES tests/testfilecheck.cpp) message(WARNING "Unable to check testfile integrity because OpenSSL is not available.") endif() # include modules to apply configuration include(BasicConfig) include(WindowsResources) include(LibraryTarget) include(TestTarget) include(Doxygen) include(ConfigHeader)