From 5dcf6a83fd0ff2736a23f65866b2aea500ac5816 Mon Sep 17 00:00:00 2001 From: Elias Steurer Date: Sat, 13 Mar 2021 16:17:56 +0100 Subject: [PATCH] Add copy step --- CMakeLists.txt | 50 +++++------------------------- ScreenPlay/CMakeLists.txt | 14 +++++++++ ScreenPlay/src/settings.cpp | 10 ------ ScreenPlayShader/CMakeLists.txt | 20 +++++++++--- ScreenPlayWallpaper/CMakeLists.txt | 8 +++++ ScreenPlayWidget/CMakeLists.txt | 8 +++++ 6 files changed, 53 insertions(+), 57 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c71eac6..ed5483aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,46 +81,12 @@ if(WIN32) add_subdirectory(ScreenPlaySysInfo) endif() +#if(APPLE) +#add_custom_target(CopyDependencies DEPENDS ScreenPlay) +#add_custom_command(TARGET CopyDependencies POST_BUILD +# COMMAND "ScreenPlayWallpaper" -E copy_directory +# "$" +# "${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/$/" +# COMMENT "Copying into ScreenPlay.app bundle") +#endif() -if(APPLE) - - -# To Create a package, one can run "cpack -G DragNDrop CPackConfig.cmake" on Mac OS X -# ~/Qt/Tools/CMake/CMake.app/Contents/bin/cpack -# where CPackConfig.cmake is created by including CPack -# And then there's ways to customize this as well -set(CPACK_BINARY_DRAGNDROP ON) -set(CPACK_PACKAGE_NAME "ScreenPlay") -set(CPACK_PACKAGE_VENDOR "ScreenPlay") - -set(CPACK_GENERATOR "DragNDrop")#;TGZ;productbuild - -set(CPACK_DMG_FORMAT "UDBZ") -set(CPACK_DMG_VOLUME_NAME "${PROJECT_NAME}") -set(CPACK_SYSTEM_NAME "OSX") - -set(EXECUTABLE "${PROJECT_NAME}.app") - - -install(TARGETS ScreenPlay - RUNTIME - DESTINATION bin - COMPONENT applications) - -install(TARGETS ScreenPlayWallpaper - RUNTIME - DESTINATION bin - COMPONENT applications) - -install(TARGETS ScreenPlayWidget - RUNTIME - DESTINATION bin - COMPONENT applications) - - -# This must always be last! -include(CPack) - - - -endif() diff --git a/ScreenPlay/CMakeLists.txt b/ScreenPlay/CMakeLists.txt index f3e97173..b99753d2 100644 --- a/ScreenPlay/CMakeLists.txt +++ b/ScreenPlay/CMakeLists.txt @@ -131,4 +131,18 @@ target_link_libraries( target_include_directories(${PROJECT_NAME} PRIVATE ${QT_TELEMTRY_INCLUDE}) +if(APPLE) + # Creates a ScreenPlay.app + set_target_properties(${PROJECT_NAME} PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + MACOSX_BUNDLE TRUE + MACOSX_RPATH TRUE + MACOSX_FRAMEWORK_IDENTIFIER screen-play.app + XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries" + RESOURCE "${RESOURCE_FILES}" + XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE + XCODE_ATTRIBUTE_EXECUTABLE_NAME ${PROJECT_NAME} + ) + +endif() diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index eabec94d..69bd95cf 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -174,18 +174,8 @@ void Settings::setupWidgetAndWindowPaths() { QDir workingDir(QGuiApplication::applicationDirPath()); -#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) -#endif m_globalVariables->setWidgetExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWidget" + ScreenPlayUtil::executableEnding())); m_globalVariables->setWallpaperExecutablePath(QUrl(workingDir.path() + "/ScreenPlayWallpaper" + ScreenPlayUtil::executableEnding())); - - -#if defined(Q_OS_OSX) - - // MACOS bundle - //m_globalVariables->setWidgetExecutablePath(QUrl::fromUserInput(workingDir.path() + "ScreenPlayWidget.app/Contents/MacOS/ScreenPlayWidget").toLocalFile()); - //m_globalVariables->setWallpaperExecutablePath(QUrl::fromUserInput(workingDir.path() + "ScreenPlayWallpaper.app/Contents/MacOS/ScreenPlayWallpaper").toLocalFile()); -#endif } /*! diff --git a/ScreenPlayShader/CMakeLists.txt b/ScreenPlayShader/CMakeLists.txt index 158d920b..02571e58 100644 --- a/ScreenPlayShader/CMakeLists.txt +++ b/ScreenPlayShader/CMakeLists.txt @@ -40,8 +40,18 @@ file(MAKE_DIRECTORY ${DESTDIR}) configure_file(qmldir ${DESTDIR} COPYONLY) -# Copies ScreenPlayShader.* into qt qml plugins folder -add_custom_command( - TARGET ${PROJECT_NAME} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $ ${DESTDIR}/$) +if(APPLE) +add_custom_command(TARGET ${PROJECT_NAME} + POST_BUILD + COMMENT "Copying into ScreenPlay.app bundle" + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bin/$ + ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/$) +else() + # Copies ScreenPlayShader.* into qt qml plugins folder + add_custom_command( + TARGET ${PROJECT_NAME} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + $ + ${DESTDIR}/$) +endif() diff --git a/ScreenPlayWallpaper/CMakeLists.txt b/ScreenPlayWallpaper/CMakeLists.txt index 70ce2490..ffefca00 100644 --- a/ScreenPlayWallpaper/CMakeLists.txt +++ b/ScreenPlayWallpaper/CMakeLists.txt @@ -44,3 +44,11 @@ endif() target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Quick Qt5::Gui Qt5::Widgets Qt5::Core Qt5::WebEngine ScreenPlaySDK ScreenPlayUtil) + +if(APPLE) +add_custom_command(TARGET ${PROJECT_NAME} + POST_BUILD + COMMENT "Copying into ScreenPlay.app bundle" + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bin/${PROJECT_NAME} + ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/${PROJECT_NAME}) +endif() diff --git a/ScreenPlayWidget/CMakeLists.txt b/ScreenPlayWidget/CMakeLists.txt index 08077ef6..fa3ffdfa 100644 --- a/ScreenPlayWidget/CMakeLists.txt +++ b/ScreenPlayWidget/CMakeLists.txt @@ -32,3 +32,11 @@ if(APPLE) endif() target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Quick Qt5::Gui Qt5::Widgets Qt5::Core ScreenPlaySDK) + +if(APPLE) +add_custom_command(TARGET ${PROJECT_NAME} + POST_BUILD + COMMENT "Copying into ScreenPlay.app bundle" + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bin/${PROJECT_NAME} + ${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/${PROJECT_NAME}) +endif()