cmake_minimum_required(VERSION 3.22) project(SubWave LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia OpenGL OpenGLWidgets Core) # require ffmpeg find_package(PkgConfig REQUIRED) pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET libavformat libavcodec libavutil libswresample ) # require fftw (fourier transform) pkg_check_modules(FFTW REQUIRED IMPORTED_TARGET fftw3) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) # source files set(SOURCES src/main.cpp src/MetadataReader.cpp src/Config.cpp src/engine/AudioEngine.cpp src/engine/FFmpegDecoder.cpp src/engine/EqProcessor.cpp src/engine/SpectrumAnalyzer.cpp src/MusicLibrary.cpp src/CoverArtWidget.cpp src/SpectrogramWidget.cpp src/GradientDialog.cpp src/EqualizerWidget.cpp src/TrackDelegate.cpp src/playlists/PlaylistModel.cpp src/playlists/PlaylistManager.cpp src/playlists/PlaylistCreatorDialog.cpp src/playlists/PlaylistBrowserDialog.cpp src/MainWindow.cpp ) set(HEADERS src/Track.h src/MetadataReader.h src/Config.h src/engine/AudioEngine.h src/MusicLibrary.h src/CoverArtWidget.h src/SpectrogramWidget.h src/GradientDialog.h src/EqualizerWidget.h src/TrackDelegate.h src/playlists/PlaylistModel.h src/playlists/PlaylistManager.h src/playlists/PlaylistCreatorDialog.h src/playlists/PlaylistBrowserDialog.h src/MainWindow.h ) set(RESOURCES src/shaders.qrc src/application.qrc ) # normal platforms add_executable(SubWave ${SOURCES} ${HEADERS} ${RESOURCES}) # For windows stupid ahh if(WIN32) set_target_properties(SubWave PROPERTIES WIN32_EXECUTABLE TRUE) endif() target_include_directories(SubWave PRIVATE src src/engine src/playlists ) target_link_libraries(SubWave PRIVATE Qt6::Widgets Qt6::Multimedia Qt6::OpenGL Qt6::OpenGLWidgets PkgConfig::FFMPEG PkgConfig::FFTW )