Skip to content

Commit

Permalink
Merge pull request #473 from valbok/cmake
Browse files Browse the repository at this point in the history
Introduce cmake support
  • Loading branch information
valbok authored May 20, 2024
2 parents cb12fc4 + 2c0bb8e commit 5073829
Show file tree
Hide file tree
Showing 4 changed files with 353 additions and 4 deletions.
38 changes: 34 additions & 4 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
make CC=$CC CXX=$CXX
./tst_qavplayer --platform minimal -maxwarnings 100000
- name: Examples
- name: QMake Examples
run: |
cd examples/qml_video
qmake
Expand All @@ -69,6 +69,15 @@ jobs:
qmake
make CC=$CC CXX=$CXX
- name: CMake Examples
run: |
cd examples/qml_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON
make CC=$CC CXX=$CXX CXXFLAGS='-std=c++17' VERBOSE=1
cd ../widget_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON
make CC=$CC CXX=$CXX CXXFLAGS='-std=c++17' VERBOSE=1
macos:
strategy:
matrix:
Expand Down Expand Up @@ -110,7 +119,7 @@ jobs:
make CC=$CC CXX=$CXX
tst_qavplayer.app/Contents/MacOS/tst_qavplayer --platform minimal -maxwarnings 100000
- name: Examples
- name: QMake Examples
run: |
export FFMPEG=`brew --prefix ffmpeg`
cd examples/qml_video
Expand All @@ -120,6 +129,16 @@ jobs:
qmake INCLUDEPATH+="$FFMPEG/include" LIBS+="-L$FFMPEG/lib"
make CC=$CC CXX=$CXX
- name: CMake Examples
run: |
export FFMPEG=`brew --prefix ffmpeg`
cd examples/qml_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$FFMPEG/include -DCMAKE_LIBRARY_PATH=$FFMPEG/lib
make CC=$CC CXX=$CXX CXXFLAGS='-std=c++17' VERBOSE=1
cd ../widget_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$FFMPEG/include -DCMAKE_LIBRARY_PATH=$FFMPEG/lib
make CC=$CC CXX=$CXX CXXFLAGS='-std=c++17' VERBOSE=1
windows:
strategy:
matrix:
Expand Down Expand Up @@ -221,7 +240,7 @@ jobs:
mingw32-make
release\tst_qavplayer.exe -maxwarnings 100000
- name: Examples
- name: QMake Examples
if: ${{ matrix.type == 'MSVC' }}
run: |
cd examples/qml_video
Expand All @@ -231,7 +250,17 @@ jobs:
qmake
nmake
- name: Examples
- name: CMake Examples
if: ${{ matrix.type == 'MSVC' }}
run: |
cd examples/qml_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=D:\a\QtAVPlayer\ffmpeg\include -DCMAKE_LIBRARY_PATH=D:\a\QtAVPlayer\ffmpeg\lib
cmake --build . -v
cd ../widget_video
cmake . -DQT_AVPLAYER_MULTIMEDIA=ON -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=D:\a\QtAVPlayer\ffmpeg\include -DCMAKE_LIBRARY_PATH=D:\a\QtAVPlayer\ffmpeg\lib
cmake --build . -v
- name: QMake Examples
if: ${{ matrix.type == 'MINGW' }}
run: |
cd examples/qml_video
Expand All @@ -240,3 +269,4 @@ jobs:
cd ../extract_frames
qmake
mingw32-make
52 changes: 52 additions & 0 deletions examples/qml_video/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
cmake_minimum_required(VERSION 3.8)
project(qml_video LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)

find_package(Qt6 COMPONENTS CoreTools)
if(Qt6CoreTools_FOUND)
find_package(Qt6 COMPONENTS QmlTools Quick REQUIRED)
qt6_add_resources(QT_RESOURCES qml_qt6.qrc)
find_package(Qt6 COMPONENTS MultimediaQuickPrivate REQUIRED)
include_directories(${Qt6MultimediaQuick_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt6Multimedia_PRIVATE_INCLUDE_DIRS})
find_package(Qt6 REQUIRED COMPONENTS Core BuildInternals OPTIONAL_COMPONENTS Multimedia)
add_definitions(${Qt6Core_DEFINITIONS})
else()
find_package(Qt5 REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Gui Multimedia)
find_package(Qt5 COMPONENTS Quick)
qt5_add_resources(QT_RESOURCES qml.qrc)
include_directories(${Qt5Multimedia_PRIVATE_INCLUDE_DIRS})
add_definitions(${Qt5Core_DEFINITIONS})
endif()

include_directories(../../src/)
set(QT_AVPLAYER_DIR ../../src/QtAVPlayer/)
include(../../src/QtAVPlayer/QtAVPlayer.cmake)

set(SOURCES ${QtAVPlayer_SOURCES} main.cpp)

add_executable(${PROJECT_NAME} WIN32 ${SOURCES} ${QT_RESOURCES})
if(NOT WIN32)
add_definitions(-std=c++1z)
target_compile_options(${PROJECT_NAME} PRIVATE -fPIC)
endif()

set(LIBS ${QtAVPlayer_LIBS})

if(Qt6_FOUND)
set(LIBS ${LIBS} Qt6::Core Qt6::Gui Qt6::Multimedia Qt6::Quick Qt6::MultimediaQuickPrivate)
else()
set(LIBS ${LIBS} Qt5::Core Qt5::Gui Qt5::Quick Qt5::Multimedia ${MultimediaQuick_LIBRARY})
if (Qt5Core_VERSION VERSION_LESS 5.15.0)
find_library(MultimediaQuick_LIBRARY REQUIRED NAMES Qt5MultimediaQuick)
set(LIBS ${LIBS} ${MultimediaQuick_LIBRARY})
else()
find_package(Qt5 COMPONENTS MultimediaQuick REQUIRED)
include_directories(${Qt5MultimediaQuick_PRIVATE_INCLUDE_DIRS})
set(LIBS ${LIBS} Qt5::MultimediaQuick)
endif()
endif()

target_link_libraries(${PROJECT_NAME} ${LIBS})
42 changes: 42 additions & 0 deletions examples/widget_video/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
cmake_minimum_required(VERSION 3.8)
project(widget_video LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)

find_package(Qt6 COMPONENTS CoreTools)
if(Qt6CoreTools_FOUND)
find_package(Qt6 COMPONENTS MultimediaWidgets REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS Core BuildInternals OPTIONAL_COMPONENTS Multimedia)
include_directories(${Qt6Multimedia_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt6MultimediaWidgets_INCLUDE_DIRS})
add_definitions(${Qt6Core_DEFINITIONS})
else()
find_package(Qt5 COMPONENTS MultimediaWidgets REQUIRED)
find_package(Qt5 REQUIRED COMPONENTS Core OPTIONAL_COMPONENTS Gui Multimedia)
include_directories(${Qt5Multimedia_PRIVATE_INCLUDE_DIRS})
include_directories(${Qt5MultimediaWidgets_INCLUDE_DIRS})
add_definitions(${Qt5Core_DEFINITIONS})
endif()

include_directories(../../src/)
set(QT_AVPLAYER_DIR ../../src/QtAVPlayer/)
include(../../src/QtAVPlayer/QtAVPlayer.cmake)

set(SOURCES ${QtAVPlayer_SOURCES} main.cpp)

add_executable(${PROJECT_NAME} WIN32 ${SOURCES} ${QT_RESOURCES})
if(NOT WIN32)
add_definitions(-std=c++1z)
target_compile_options(${PROJECT_NAME} PRIVATE -fPIC)
endif()

set(LIBS ${QtAVPlayer_LIBS})

if(Qt6_FOUND)
set(LIBS ${LIBS} Qt6::Core Qt6::Gui Qt6::Multimedia Qt6::MultimediaWidgets)
else()
set(LIBS ${LIBS} Qt5::Core Qt5::Gui Qt5::Multimedia Qt5::MultimediaWidgets)
endif()

target_link_libraries(${PROJECT_NAME} ${LIBS})
Loading

0 comments on commit 5073829

Please sign in to comment.