From ba961cd962e5adf00a2ca34b93e3210440a366f4 Mon Sep 17 00:00:00 2001 From: Symeon Huang Date: Sun, 6 Aug 2017 22:23:51 +0100 Subject: [PATCH] Move to use CMake build system #521 --- .gitignore | 4 +- .travis.yml | 5 +- CMakeLists.txt | 50 ++++++++++++ debian/control | 2 +- debian/rules | 9 +-- shadowsocks-qt5.pro | 43 ----------- src/CMakeLists.txt | 60 +++++++++++++++ .../shadowsocks-qt5.desktop | 0 src/sharedialog.ui | 2 +- src/ss-qt5.pri | 76 ------------------- 10 files changed, 119 insertions(+), 132 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 shadowsocks-qt5.pro create mode 100644 src/CMakeLists.txt rename shadowsocks-qt5.desktop => src/shadowsocks-qt5.desktop (100%) delete mode 100644 src/ss-qt5.pri diff --git a/.gitignore b/.gitignore index 6519e902..68a21b51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -*.pro.user* +*.user* +*.swp .directory +build/ diff --git a/.travis.yml b/.travis.yml index e43848a9..f28d4ca7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,10 @@ branches: before_install: - sudo add-apt-repository ppa:hzwhuang/ss-qt5 -y - sudo apt-get -qq update - - sudo apt-get -qq install -y qt5-qmake qt5-default qtbase5-dev libbotan1.10-dev gcc-4.8 libqrencode-dev libzbar-dev libappindicator-dev libqtshadowsocks-dev + - sudo apt-get -qq install -y qt5-default qtbase5-dev libbotan1.10-dev gcc-4.8 libqrencode-dev libzbar-dev libappindicator-dev libqtshadowsocks-dev cmake3 script: - - qmake + - mkdir build && cd build + - cmake .. - make diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..cc2564b2 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,50 @@ +cmake_minimum_required(VERSION 3.1) + +project(Shadowsocks-Qt5 + VERSION 2.10.0 + LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +find_package(Qt5Core) +find_package(Qt5Gui) +find_package(Qt5Widgets) +find_package(Qt5Network) +if(UNIX AND NOT APPLE) + find_package(Qt5DBus) +endif() +find_package(PkgConfig) + +pkg_check_modules(QSS REQUIRED QtShadowsocks>=1.10.0) +find_library(QSS_LIBRARY_VAR + NAMES ${QSS_LIBRARIES} + HINTS ${QSS_LIBRARY_DIRS} ${QSS_LIBDIR}) + +pkg_check_modules(QRENCODE REQUIRED libqrencode) +find_library(QRENCODE_LIBRARY_VAR + NAMES ${QRENCODE_LIBRARIES} + HINTS ${QRENCODE_LIBRARY_DIRS} ${QRENCODE_LIBDIR}) + +pkg_check_modules(ZBAR REQUIRED zbar) +find_library(ZBAR_LIBRARY_VAR + NAMES ${ZBAR_LIBRARIES} + HINTS ${ZBAR_LIBRARY_DIRS} ${ZBAR_LIBDIR}) + +if(UNIX AND NOT APPLE) + pkg_check_modules(APPINDICATOR REQUIRED appindicator-0.1) + find_library(APPINDICATOR_LIBRARY_VAR + NAMES ${APPINDICATOR_LIBRARIES} + HINTS ${APPINDICATOR_LIBRARY_DIRS} ${APPINDICATOR_LIBDIR}) +endif() + +if(WIN32 OR APPLE) + add_definitions(-DFD_SETSIZE=1024) +endif() + +add_subdirectory(src) diff --git a/debian/control b/debian/control index df4fbf01..0b6bd0e4 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: extra Maintainer: Symeon Huang Build-Depends: debhelper (>= 9), pkg-config, - qt5-qmake, + cmake (>= 3.1.0) | cmake3 (>= 3.1.0), qtbase5-dev, libqrencode-dev, libqtshadowsocks-dev (>= 1.10.0), diff --git a/debian/rules b/debian/rules index 74dc25cf..c13acb9a 100755 --- a/debian/rules +++ b/debian/rules @@ -1,13 +1,6 @@ #!/usr/bin/make -f export QT_SELECT := qt5 -export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed %: - dh $@ --parallel - -override_dh_auto_configure: - qmake - -override_dh_auto_install-indep: - make INSTALL_ROOT=$(CURDIR)/debian/tmp + dh $@ --buildsystem=cmake --parallel diff --git a/shadowsocks-qt5.pro b/shadowsocks-qt5.pro deleted file mode 100644 index 95cdd0ee..00000000 --- a/shadowsocks-qt5.pro +++ /dev/null @@ -1,43 +0,0 @@ -#------------------------------------------------- -# -# Project Shadowsocks-Qt5 -# -#------------------------------------------------- - -QT += core gui widgets network -unix: !macx: QT += dbus - -CONFIG += c++11 - -TARGET = ss-qt5 -TEMPLATE = app -VERSION = 2.9.0 -DEFINES += APP_VERSION=\\\"$$VERSION\\\" - -include(src/ss-qt5.pri) - -OTHER_FILES += README.md \ - shadowsocks-qt5.desktop - -desktop.files = shadowsocks-qt5.desktop -ssicon.files = src/icons/shadowsocks-qt5.png - -isEmpty(INSTALL_PREFIX) { - unix: INSTALL_PREFIX = /usr - else: INSTALL_PREFIX = .. -} - -macx: { - ICON = src/icons/shadowsocks-qt5.icns - CONFIG += link_pkgconfig -} -unix: { - desktop.path = $$INSTALL_PREFIX/share/applications - ssicon.path = $$INSTALL_PREFIX/share/icons/hicolor/512x512/apps - INSTALLS += desktop ssicon -} -win32: DEFINES += QSS_STATIC - -target.path = $$INSTALL_PREFIX/bin - -INSTALLS += target diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..69da336f --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,60 @@ +set(APP_NAME "ss-qt5") +add_definitions(-DAPP_VERSION="${PROJECT_VERSION}") + +set(SOURCE + icons.qrc + translations.qrc + main.cpp + mainwindow.cpp + ip4validator.cpp + portvalidator.cpp + ssvalidator.cpp + qrwidget.cpp + sharedialog.cpp + editdialog.cpp + logdialog.cpp + connection.cpp + confighelper.cpp + urihelper.cpp + uriinputdialog.cpp + sqprofile.cpp + settingsdialog.cpp + statusnotifier.cpp + connectiontablemodel.cpp + connectionitem.cpp + qrcodecapturer.cpp + ) + +if (WIN32) + list(APPEND SOURCE ss-qt5.rc) +endif() + +add_executable(${APP_NAME} ${SOURCE}) + +target_link_libraries(${APP_NAME} + PUBLIC Qt5::Core + PUBLIC Qt5::Gui + PUBLIC Qt5::Widgets + PUBLIC Qt5::Network + PRIVATE ${QSS_LIBRARY_VAR} + PRIVATE ${QRENCODE_LIBRARY_VAR} + PRIVATE ${ZBAR_LIBRARY_VAR}) +target_include_directories(${APP_NAME} + PRIVATE ${QSS_INCLUDE_DIRS} + PRIVATE ${QRENCODE_INCLUDE_DIRS} + PRIVATE ${ZBAR_INCLUDE_DIRS}) + +if (UNIX AND NOT APPLE) + target_link_libraries(${APP_NAME} + PRIVATE Qt5::DBus + PRIVATE ${APPINDICATOR_LIBRARY_VAR}) + target_include_directories(${APP_NAME} PRIVATE ${APPINDICATOR_INCLUDE_DIRS}) +endif() + +install(TARGETS ${APP_NAME} + RUNTIME DESTINATION bin) + +if (UNIX) + install(FILES shadowsocks-qt5.desktop DESTINATION share/applications) + install(FILES icons/shadowsocks-qt5.png DESTINATION share/icons/hicolor/512x512/apps) +endif() diff --git a/shadowsocks-qt5.desktop b/src/shadowsocks-qt5.desktop similarity index 100% rename from shadowsocks-qt5.desktop rename to src/shadowsocks-qt5.desktop diff --git a/src/sharedialog.ui b/src/sharedialog.ui index f1b68b11..37119e19 100644 --- a/src/sharedialog.ui +++ b/src/sharedialog.ui @@ -65,7 +65,7 @@ QRWidget QWidget -
src/qrwidget.h
+
qrwidget.h
1
diff --git a/src/ss-qt5.pri b/src/ss-qt5.pri deleted file mode 100644 index 38042f27..00000000 --- a/src/ss-qt5.pri +++ /dev/null @@ -1,76 +0,0 @@ -SOURCES += src/main.cpp\ - src/mainwindow.cpp \ - src/ip4validator.cpp \ - src/portvalidator.cpp \ - src/ssvalidator.cpp \ - src/qrwidget.cpp \ - src/sharedialog.cpp \ - src/editdialog.cpp \ - src/logdialog.cpp \ - src/connection.cpp \ - src/confighelper.cpp \ - src/urihelper.cpp \ - src/uriinputdialog.cpp \ - src/sqprofile.cpp \ - src/settingsdialog.cpp \ - src/statusnotifier.cpp \ - src/connectiontablemodel.cpp \ - src/connectionitem.cpp \ - src/qrcodecapturer.cpp - -HEADERS += src/mainwindow.h \ - src/ip4validator.h \ - src/portvalidator.h \ - src/ssvalidator.h \ - src/qrwidget.h \ - src/sharedialog.h \ - src/editdialog.h \ - src/logdialog.h \ - src/connection.h \ - src/confighelper.h \ - src/urihelper.h \ - src/uriinputdialog.h \ - src/sqprofile.h \ - src/settingsdialog.h \ - src/statusnotifier.h \ - src/connectiontablemodel.h \ - src/connectionitem.h \ - src/qrcodecapturer.h - -FORMS += src/mainwindow.ui \ - src/sharedialog.ui \ - src/editdialog.ui \ - src/logdialog.ui \ - src/uriinputdialog.ui \ - src/settingsdialog.ui - -RESOURCES += src/icons.qrc \ - src/translations.qrc - -TRANSLATIONS += src/i18n/ss-qt5_zh_CN.ts \ - src/i18n/ss-qt5_zh_TW.ts - -win32: RC_FILE = src/ss-qt5.rc - -isEmpty(BOTAN_VER) { - BOTAN_VER = 1.10 -} - -win32: { - win32-msvc*: error("Doesn't Support MSVC! Please use MinGW GCC.") - else: { - INCLUDEPATH += D:/Projects/libQtShadowsocks/lib#just for convenience - } - LIBS += -L./ -lqrencode -lQtShadowsocks -lbotan-$$BOTAN_VER -lzbar -liconv -} -macx: { - QT_CONFIG -= no-pkg-config -} -unix: { - CONFIG += link_pkgconfig - PKGCONFIG += libqrencode QtShadowsocks botan-$$BOTAN_VER zbar - !macx: { - PKGCONFIG += gtk+-2.0 appindicator-0.1 - DEFINES += USE_APP_INDICATOR - } -}