• 2299阅读
  • 9回复

[讨论]Qt Multimedia 5.15和6.2不能一起用? [复制链接]

上一主题 下一主题
离线fsu0413
 

只看楼主 倒序阅读 楼主  发表于: 2021-10-06
在Qt5.15和Qt6.2都存在的环境下,使用CMake构建下面的CMakeLists.txt报错
已报QTBUG,被关了,说这个CMakeLists.txt有问题,使用了“Qt5和Qt5”在链接语句里,不过我并没看出来问题出在哪里,也没明白他说的“Qt5和Qt5”是什么意思

https://bugreports.qt.io/browse/QTBUG-97097


代码如下

  1. cmake_minimum_required(VERSION 3.20)
  2. if ( NOT ( ( CMAKE_GENERATOR MATCHES "Makefiles" ) OR ( CMAKE_GENERATOR MATCHES "Ninja" ) ) )
  3.     message(FATAL_ERROR "We only support makefile and ninja generator.")
  4. endif()
  5. project(TestProject
  6.     VERSION 0.10.3
  7.     )
  8. find_package(Qt5 COMPONENTS Core  Multimedia) # Locate the position of Qt5.
  9. find_package(Qt6 COMPONENTS Core OPTIONAL_COMPONENTS Multimedia) # Locate the position of Qt6.
  10. if (NOT (Qt5_FOUND OR Qt6_FOUND))
  11.     message(FATAL_ERROR "at least one of Qt 5 and Qt 6 is needed")
  12. endif()
  13. if (Qt5_FOUND)
  14.     if (NOT ANDROID)
  15.         add_executable(TestProgram WIN32 MACOSX_BUNDLE main.cpp )
  16.     else()
  17.         add_library(TestProgram MODULE main.cpp )
  18.     endif()
  19.     set_property(TARGET TestProgram PROPERTY AUTOMOC ON)
  20.     set_property(TARGET TestProgram PROPERTY AUTOUIC ON)
  21.     set_property(TARGET TestProgram PROPERTY AUTORCC ON)
  22.     target_compile_definitions(TestProgram PUBLIC QT_DISABLE_DEPRECATED_BEFORE=0x60000)
  23.     target_link_libraries (TestProgram Qt5::Core Qt5::Multimedia)
  24.     if (NOT WIN32)
  25.         target_link_libraries(TestProgram dl)
  26.     endif()
  27. endif()
  28. if (Qt6_FOUND)
  29.     add_executable (Test6Program WIN32 MACOSX_BUNDLE main.cpp )
  30.     set_property(TARGET Test6Program PROPERTY AUTOMOC ON)
  31.     set_property(TARGET Test6Program PROPERTY AUTOUIC ON)
  32.     set_property(TARGET Test6Program PROPERTY AUTORCC ON)
  33.     target_compile_definitions(Test6Program PUBLIC QT_DISABLE_DEPRECATED_BEFORE=0x70000)
  34.     target_link_libraries(Test6Program Qt6::Core)
  35.     if (Qt6Multimedia_FOUND)
  36.         target_link_libraries (Test6Program Qt6::Multimedia)
  37.     endif()
  38.     
  39.     if (NOT WIN32)
  40.         target_link_libraries(Test6Program dl)
  41.     endif()
  42. endif()

  1. D:\test>cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="D:\qqt\5.15.2\msvc2019_64;D:\qqt\6.2.0\msvc2019_64" .
  2. – The C compiler identification is MSVC 19.29.30133.0
  3. – The CXX compiler identification is MSVC 19.29.30133.0
  4. – Detecting C compiler ABI info
  5. – Detecting C compiler ABI info - done
  6. – Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
  7. – Detecting C compile features
  8. – Detecting C compile features - done
  9. – Detecting CXX compiler ABI info
  10. – Detecting CXX compiler ABI info - done
  11. – Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
  12. – Detecting CXX compile features
  13. – Detecting CXX compile features - done
  14. – Looking for pthread.h
  15. – Looking for pthread.h - not found
  16. – Found Threads: TRUE
  17. – Check if linker can resolve circular dependencies - TRUE
  18. – Performing Test HAVE_STDATOMIC
  19. – Performing Test HAVE_STDATOMIC - Success
  20. – Found WrapAtomic: TRUE
  21. – Could NOT find WrapVulkanHeaders (missing: Vulkan_INCLUDE_DIR)
  22. – Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
  23. – Could NOT find WrapOpenSSLHeaders (missing: OPENSSL_INCLUDE_DIR)
  24. – Configuring done
  25. CMake Error: The INTERFACE_QT_MAJOR_VERSION property of "Qt5::Core" does
  26. not agree with the value of QT_MAJOR_VERSION already determined
  27. for "Test6Program".
  28. – Generating done
  29. CMake Generate step failed. Build files cannot be regenerated correctly.
  30. D:\test>





离线20091001753

只看该作者 1楼 发表于: 2021-10-06
Qt6 已经移除了 Qt5 里包含的 QtSpeech 模块。
它的 TTS 功能,非常好用啊,很实用的!
能否在官方那里,发个投票啥的,让这个模块回归。
别忘了给个链接,谢谢!
(づ ̄ 3 ̄)づ
离线fsu0413

只看该作者 2楼 发表于: 2021-10-09
回 20091001753 的帖子
20091001753:Qt6 已经移除了 Qt5 里包含的 QtSpeech 模块。
它的 TTS 功能,非常好用啊,很实用的!
能否在官方那里,发个投票啥的,让这个模块回归。
别忘了给个链接,谢谢! (2021-10-06 13:46) 

我看了下,那个模块相当简略,就是把Qt的API调用转换为platform dependent的调用。。。
这个模块没怎么用Qt内部API,你可以试试直接下载5.15的代码在6.2上编译下。
(我用不到这个模块。。。。不好意思)
离线fsu0413

只看该作者 3楼 发表于: 2021-10-09
我重开了原QTBUG,希望我不要被Qt官方拉黑。。。。
在线lixinwei

只看该作者 4楼 发表于: 2021-10-09
我觉得这应该是Build System的问题,当时创建问题的时候应该把Component/s选为Build System:CMake,这样Assignee就会是Qt Build System Team,会有熟悉CMake的人来回复
离线fsu0413

只看该作者 5楼 发表于: 2021-10-09
回 lixinwei 的帖子
lixinwei:我觉得这应该是Build System的问题,当时创建问题的时候应该把Component/s选为Build System:CMake,这样Assignee就会是Qt Build System Team,会有熟悉CMake的人来回复 (2021-10-09 17:55) 

难道Qt的构建系统不是每个模块自己写自己的吗。。。。。
我改一下吧,加个component
在线lixinwei

只看该作者 6楼 发表于: 2021-10-09
回 fsu0413 的帖子
fsu0413:难道Qt的构建系统不是每个模块自己写自己的吗。。。。。
我改一下吧,加个component (2021-10-09 19:13)

Qt 6 绝大部分模块的 CMake 文件都不是人工编写的,而是用脚本生成的(运行qtbase/util/cmake/pro2cmake.py,根据qmake文件生成相应的cmake文件),这些模块的维护者不一定都熟悉CMake
离线fsu0413

只看该作者 7楼 发表于: 2021-10-10
回 lixinwei 的帖子
lixinwei:Qt 6 绝大部分模块的 CMake 文件都不是人工编写的,而是用脚本生成的(运行qtbase/util/cmake/pro2cmake.py,根据qmake文件生成相应的cmake文件),这些模块的维护者不一定都熟悉CMake (2021-10-09 19:23) 

好家伙。。。。这都行
离线fsu0413

只看该作者 8楼 发表于: 2021-10-11
有结论了,问题貌似是出在Qt6这边,可以期待一下官方更新了
在线lixinwei

只看该作者 9楼 发表于: 2021-10-11
这确实是Build System的bug而不是Multimedia的bug
快速回复
限100 字节
 
上一个 下一个