if(DESIRED_QT_VERSION)
if(DESIRED_QT_VERSION MATCHES 4)
find_package(Qt4 QUIET)
elseif(DESIRED_QT_VERSION MATCHES 5)
find_package(Qt5Widgets QUIET)
find_package(Qt5Network QUIET)
find_package(Qt5LinguistTools QUIET)
else()
find_package(Qt6Widgets QUIET)
find_package(Qt6Network QUIET)
find_package(Qt6LinguistTools QUIET)
endif()
else()
find_package(Qt6Widgets QUIET)
find_package(Qt6Network QUIET)
find_package(Qt6LinguistTools QUIET)
find_package(Qt5Widgets QUIET)
find_package(Qt5Network QUIET)
find_package(Qt5LinguistTools QUIET)
find_package(Qt4 QUIET)
endif()
set(SOURCES main.cpp
mainwindow.cpp
fileuploader.cpp
commandqueue.cpp
mtpobjectsmodel.cpp
mtpstoragesmodel.cpp
progressdialog.cpp
createdirectorydialog.cpp
renamedialog.cpp
devicesdialog.cpp
qtobjectstream.cpp
utils.cpp
)
set(HEADERS mainwindow.h
fileuploader.h
commandqueue.h
mtpobjectsmodel.h
progressdialog.h
createdirectorydialog.h
renamedialog.h
devicesdialog.h
qtobjectstream.h
)
set(FORMS mainwindow.ui
progressdialog.ui
createdirectorydialog.ui
renamedialog.ui
devicesdialog.ui
)
set(TS_FILES
translations/android-file-transfer-linux_cs.ts
translations/android-file-transfer-linux_it.ts
translations/android-file-transfer-linux_nl.ts
translations/android-file-transfer-linux_ru.ts
translations/android-file-transfer-linux_zh-CN.ts
)
if (Qt6Widgets_FOUND)
message(STATUS "Using Qt6")
qt6_wrap_cpp(HEADERS_MOC ${HEADERS})
qt6_wrap_ui(FORMS_HEADERS ${FORMS})
qt6_add_translation(QM_FILES ${TS_FILES})
set(QM_FILES_XML "")
foreach(_QM ${QM_FILES})
get_filename_component(_QM ${_QM} NAME)
set(QM_FILES_XML "${QM_FILES_XML}${_QM}")
endforeach()
configure_file(translations/translations.qrc.in translations.qrc)
qt6_add_resources(RESOURCES android-file-transfer.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
include_directories(${Qt6Widgets_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS})
set(EXTRA_QT_LINK ${Qt6Widgets_LIBRARIES} ${Qt6Network_LIBRARIES})
elseif (Qt5Widgets_FOUND)
message(STATUS "Using Qt5")
qt5_wrap_cpp(HEADERS_MOC ${HEADERS})
qt5_wrap_ui(FORMS_HEADERS ${FORMS})
qt5_add_translation(QM_FILES ${TS_FILES})
set(QM_FILES_XML "")
foreach(_QM ${QM_FILES})
get_filename_component(_QM ${_QM} NAME)
set(QM_FILES_XML "${QM_FILES_XML}${_QM}")
endforeach()
configure_file(translations/translations.qrc.in translations.qrc)
qt5_add_resources(RESOURCES android-file-transfer.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS})
set(EXTRA_QT_LINK ${Qt5Widgets_LIBRARIES} ${Qt5Network_LIBRARIES})
elseif(Qt4_FOUND OR QT_FOUND OR QT4_FOUND)
message(STATUS "Using Qt4")
qt4_wrap_cpp(HEADERS_MOC ${HEADERS})
qt4_wrap_ui(FORMS_HEADERS ${FORMS})
qt4_add_translation(QM_FILES ${TS_FILES})
set(QM_FILES_XML "")
foreach(_QM ${QM_FILES})
get_filename_component(_QM ${_QM} NAME)
set(QM_FILES_XML "${QM_FILES_XML}${_QM}")
endforeach()
configure_file(translations/translations.qrc.in translations.qrc)
qt4_add_resources(RESOURCES android-file-transfer.qrc ${CMAKE_CURRENT_BINARY_DIR}/translations.qrc)
include(${QT_USE_FILE})
set(EXTRA_QT_LINK Qt4::QtNetwork ${QT_LIBRARIES})
else()
message(WARNING "No Qt found")
set(BUILD_QT_UI FALSE)
endif()
if (BUILD_MTPZ)
set(MTPZ_DATA_SOURCE "\"https://raw.githubusercontent.com/kbhomes/libmtp-zune/master/src/.mtpz-data\"")
add_definitions(-DMTPZ_DATA_SOURCE=${MTPZ_DATA_SOURCE})
endif()
if (BUILD_QT_UI)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
string(TIMESTAMP COPYRIGHT_YEAR "%Y")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${AFT_BASE_VERSION}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${AFT_VERSION}")
set(MACOSX_BUNDLE_COPYRIGHT "2015-${COPYRIGHT_YEAR} Vladimir Menshakov")
set(MACOSX_BUNDLE_ICON_FILE "android-file-transfer.icns")
set(MACOSX_BUNDLE_GUI_IDENTIFIER "io.github.whoozle.android-file-transfer-linux")
set(MACOSX_BUNDLE_BUNDLE_NAME "${CMAKE_PROJECT_NAME}")
set(MACOSX_BUNDLE_EXECUTABLE_NAME "${CMAKE_PROJECT_NAME}")
set(MACOSX_BUNDLE_RESOURCES "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.app/Contents/Resources")
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${MACOSX_BUNDLE_RESOURCES})
set(MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_BINARY_DIR}/Info.plist)
message(STATUS "generated bundle info is in ${MACOSX_BUNDLE_INFO_PLIST}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in ${MACOSX_BUNDLE_INFO_PLIST})
set(APPLICATION_ICON ${CMAKE_SOURCE_DIR}/osx/android-file-transfer.icns)
set_source_files_properties(${APPLICATION_ICON} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
else()
set(APPLICATION_ICON "")
endif()
add_definitions(${QT_DEFINITIONS})
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_executable("${CMAKE_PROJECT_NAME}" MACOSX_BUNDLE ${APPLICATION_ICON} ${SOURCES} ${HEADERS_MOC} ${FORMS_HEADERS} ${RESOURCES})
set_property(TARGET ${CMAKE_PROJECT_NAME} PROPERTY MACOSX_BUNDLE_INFO_PLIST "${MACOSX_BUNDLE_INFO_PLIST}")
target_link_libraries("${CMAKE_PROJECT_NAME}" ${EXTRA_QT_LINK} ${MTP_LIBRARIES})
install(TARGETS ${CMAKE_PROJECT_NAME}
RUNTIME DESTINATION bin
BUNDLE DESTINATION .)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(MACOSX_BUNDLE_APP_PATH "${MACOSX_BUNDLE_ROOT_DIR}/Contents/MacOS/${CMAKE_PROJECT_NAME}")
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
COMMAND ${OTOOL_BIN} -L "$"
)
if (Qt5Widgets_FOUND)
set(MACDEPLOYQT_TOOL ${Qt5Widgets_DIR}/../../../bin/macdeployqt)
else()
get_filename_component(QT_BIN_DIR ${QT_QMAKE_EXECUTABLE} PATH)
set(MACDEPLOYQT_TOOL ${QT_BIN_DIR})
endif()
message(STATUS "Macdeployqt path: ${MACDEPLOYQT_TOOL}")
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../Frameworks/" $)
set(MACOSX_BUNDLE_LIBS_PRE_INSTALL)
foreach(DYNLIB ${MACOSX_BUNDLE_LIBS})
message(STATUS "additional bundle lib ${DYNLIB}")
get_filename_component(DYNLIB_NAME "${DYNLIB}" NAME)
set(MACOSX_BUNDLE_LIBS_PRE_INSTALL "
${MACOSX_BUNDLE_LIBS_PRE_INSTALL}
file(INSTALL \"${DYNLIB}\" DESTINATION \"${MACOSX_BUNDLE_ROOT_DIR}/Contents/Frameworks\" FOLLOW_SYMLINK_CHAIN)
message(STATUS \"qt: fixing ${DYNLIB_NAME}\")
execute_process(COMMAND \"${CMAKE_INSTALL_NAME_TOOL}\" -change \"${DYNLIB_NAME}\" \"@executable_path/../Frameworks/${DYNLIB_NAME}\" \"${MACOSX_BUNDLE_APP_PATH}\")
")
endforeach()
endif()
install (CODE "
message(STATUS \"Running deploy Qt tool: ${MACDEPLOYQT_TOOL}\")
execute_process(COMMAND \"${MACDEPLOYQT_TOOL}\" ${MACOSX_BUNDLE_ROOT_DIR})
${MACOSX_BUNDLE_LIBS_PRE_INSTALL}
${MACOSX_BUNDLE_LIBS_INSTALL}
execute_process(COMMAND \"${OTOOL_BIN}\" -L \"${MACOSX_BUNDLE_APP_PATH}\")
" COMPONENT Runtime)
else()
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/android-file-transfer.desktop DESTINATION share/applications)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/android-file-transfer.appdata.xml DESTINATION share/metainfo)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/android-file-transfer.png DESTINATION share/icons/hicolor/512x512/apps)
endif()
endif()