mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-23 03:02:53 +01:00
7aef811ff7
* CMake: Refactor build to multiple libraries - Refactor CMake build system by creating separate libraries for different components - Create interface libraries for most dependencies and add 3rdparty::* ALIAS targets for ease of use and use them to try specifying correct dependencies for each target - Prefer 3rdparty:: ALIAS when linking dependencies - Exclude xxHash subdirectory from ALL build target - Add USE_SYSTEM_ZLIB option to select between using included ZLib and the ZLib in CMake search path * Add cstring include to Log.cpp * CMake: Add 3rdparty::glew interface target * Add Visual Studio CMakeSettings.json to gitignore * CMake: Move building and finding LLVM to 3rdparty/llvm.cmake script - LLVM is now built under 3rdparty/ directory in the binary directory * CMake: Move finding Qt5 to 3rdparty/qt5.cmake script - Script has to be included in rpcs3/CMakeLists.txt because it defines Qt5::moc target which isn't available in that folder if it is included in 3rdparty directory - Set AUTOMOC and AUTOUIC properties for targets requiring them (rpcs3 and rpcs3_ui) instead of setting CMAKE_AUTOMOC and CMAKE_AUTOUIC so those properties are not defined for all targets under rpcs3 dir * CMake: Remove redundant code from rpcs3/CMakeLists.txt * CMake: Add BUILD_LLVM_SUBMODULE option instead of hardcoded check - Add BUILD_LLVM_SUBMODULE option (defaults to ON) to allow controlling usage of the LLVM submodule. - Move option definitions to root CMakeLists * CMake: Remove separate Emu subtargets - Based on discussion in pull request #5032, I decided to combine subtargets under Emu folder back to a single rpcs3_emu target * CMake: Remove utilities, loader and crypto targets: merge them to Emu - Removed separate targets and merged them into rpcs3_emu target as recommended in pull request (#5032) conversations. Separating targets probably later in a separate pull request * Fix relative includes in pad_thread.cpp * Fix Travis-CI cloning all submodules needlessly
50 lines
2.1 KiB
CMake
50 lines
2.1 KiB
CMake
add_library(3rdparty_qt5 INTERFACE)
|
|
|
|
find_package(Qt5 5.10 CONFIG COMPONENTS Widgets Network Qml)
|
|
if(WIN32)
|
|
find_package(Qt5 5.10 COMPONENTS WinExtras REQUIRED)
|
|
target_link_libraries(3rdparty_qt5 INTERFACE Qt5::Widgets Qt5::WinExtras Qt5::Network Qt5::Qml)
|
|
else()
|
|
find_package(Qt5 5.10 COMPONENTS DBus Gui)
|
|
if(Qt5DBus_FOUND)
|
|
target_link_libraries(3rdparty_qt5 INTERFACE Qt5::Widgets Qt5::DBus Qt5::Network Qt5::Qml)
|
|
target_compile_definitions(3rdparty_qt5 INTERFACE -DHAVE_QTDBUS)
|
|
else()
|
|
target_link_libraries(3rdparty_qt5 INTERFACE Qt5::Widgets Qt5::Network Qt5::Qml)
|
|
endif()
|
|
target_include_directories(3rdparty_qt5 INTERFACE ${Qt5Gui_PRIVATE_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
if(NOT Qt5Widgets_FOUND)
|
|
if(Qt5Widgets_VERSION VERSION_LESS 5.10.0)
|
|
message("Minimum supported Qt5 version is 5.10.0! You have version ${Qt5Widgets_VERSION} installed, please upgrade!")
|
|
if(CMAKE_SYSTEM MATCHES "Linux")
|
|
message(FATAL_ERROR "Most distros do not provide an up-to-date version of Qt.
|
|
If you're on Ubuntu or Linux Mint, there are PPAs you can use to install one of the latest qt5 versions.
|
|
https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.11.0-bionic
|
|
https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.11.0-xenial
|
|
https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.10.1-trusty
|
|
just make sure to run
|
|
source /opt/qt511/bin/qt511-env.sh
|
|
respective
|
|
source /opt/qt510/bin/qt510-env.sh
|
|
before re-running cmake")
|
|
elseif(WIN32)
|
|
message(FATAL_ERROR "You can download the latest version of Qt5 here: https://www.qt.io/download-open-source/")
|
|
else()
|
|
message(FATAL_ERROR "Look online for instructions on installing an up-to-date Qt5 on ${CMAKE_SYSTEM}.")
|
|
endif()
|
|
endif()
|
|
|
|
message("CMake was unable to find Qt5!")
|
|
if(WIN32)
|
|
message(FATAL_ERROR "Make sure the QTDIR env variable has been set properly. (for example C:\\Qt\\5.11.1\\msvc2017_64\\)")
|
|
elseif(CMAKE_SYSTEM MATCHES "Linux")
|
|
message(FATAL_ERROR "Make sure to install your distro's qt5 package!")
|
|
else()
|
|
message(FATAL_ERROR "You need to have Qt5 installed, look online for instructions on installing Qt5 on ${CMAKE_SYSTEM}.")
|
|
endif()
|
|
endif()
|
|
|
|
add_library(3rdparty::qt5 ALIAS 3rdparty_qt5)
|