From 6511e3d5c51f9fe86f4bb536684a9585fae5cce8 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Tue, 2 Feb 2021 09:03:03 +0200 Subject: [PATCH] Cleanup CMake project and setup Github Actions Signed-off-by: Raul Metsma --- .github/workflows/build.yml | 42 ++++++++++++++++++++++ CMakeLists.txt | 69 +++++++++++++++---------------------- 2 files changed, 70 insertions(+), 41 deletions(-) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f0c1d18 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,42 @@ +name: CI +on: [push, pull_request] +env: + BUILD_NUMBER: ${{ github.run_number }} +jobs: + windows: + name: Build on Windows + runs-on: windows-latest + strategy: + matrix: + arch: [x86,x64] + include: + - arch: x86 + qt: win32_msvc2017 + - arch: x64 + qt: win64_msvc2017_64 + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install Qt + uses: jurplel/install-qt-action@v2 + with: + version: '5.12.10' + arch: ${{ matrix.qt }} + - name: Setup dev env + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} + sdk: 10.0.16299.0 + - name: Build + run: | + mkdir build + cd build + cmake "-GNMake Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo .. + cmake --build . --target package + - name: Archive artifacts + uses: actions/upload-artifact@v2 + with: + name: msi + path: | + build/*.msi + build/**/*.pdb diff --git a/CMakeLists.txt b/CMakeLists.txt index 80d478d..9e26e29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,12 +1,15 @@ cmake_minimum_required(VERSION 3.1.0) -project(web-eid VERSION 19.05) +project(web-eid VERSION 21.01) if(NOT DEFINED ENV{QTDIR}) - message(FATAL_ERROR "QTDIR environment variable is not set!") + if(DEFINED ENV{Qt5_DIR}) + set(ENV{QTDIR} $ENV{Qt5_DIR}) + else() + message(FATAL_ERROR "QTDIR environment variable is not set!") + endif() endif() -set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_PREFIX_PATH $ENV{QTDIR}/lib/cmake) @@ -14,29 +17,9 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(INSTALL_BIN_PATH bin) -find_package(Qt5Widgets CONFIG REQUIRED) -find_package(Qt5Network CONFIG REQUIRED) -find_package(Qt5WebSockets CONFIG REQUIRED) -find_package(Qt5Concurrent CONFIG REQUIRED) -find_package(Qt5Svg CONFIG REQUIRED) +find_package(Qt5 REQUIRED COMPONENTS Core Widgets WebSockets Concurrent Svg) file(GLOB web-eid_SRCS src/*.cpp src/dialogs/*.h) -set(web-eid_RESOURCES src/web-eid.qrc src/translations/strings.qrc) - -IF (MSVC) - add_definitions(-DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN) - set(LIBS winscard ncrypt crypt32 cryptui Advapi32) -endif (MSVC) - -if (APPLE) - find_library(PCSC PCSC) - find_library(ServiceManagement ServiceManagement) - find_library(CoreFoundation CoreFoundation) - find_library(AppKit AppKit) - - set (web-eid_SRCS src/dialogs/macosxui.mm ${web-eid_SRCS}) - set(LIBS ${CoreFoundation} ${PCSC} ${ServiceManagement} ${AppKit} dl) -endif (APPLE) foreach(plugin ${Qt5Network_PLUGINS}) get_target_property(_loc ${plugin} LOCATION) @@ -48,24 +31,28 @@ include_directories(src src/dialogs) add_definitions(-DVERSION="${PROJECT_VERSION}-evidos") add_definitions(-DGIT_REVISION="") -IF (MSVC) - add_executable(web-eid WIN32 ${web-eid_SRCS} ${web-eid_RESOURCES}) - -elseif (APPLE) - add_executable(web-eid MACOSX_BUNDLE ${web-eid_SRCS} ${web-eid_RESOURCES}) -else() - add_executable(web-eid ${web-eid_SRCS} ${web-eid_RESOURCES}) -endif () - -install(TARGETS web-eid DESTINATION ${INSTALL_BIN_PATH}) - +add_executable(web-eid WIN32 MACOSX_BUNDLE + ${web-eid_SRCS} + src/web-eid.qrc + # src/translations/strings.qrc +) target_link_libraries(web-eid Qt5::Widgets Qt5::Svg Qt5::Network Qt5::WebSockets Qt5::Concurrent - ${LIBS}) +) + +if(MSVC) + target_compile_definitions(web-eid PRIVATE UNICODE _UNICODE WIN32_LEAN_AND_MEAN) + target_link_libraries(web-eid winscard ncrypt crypt32 cryptui Advapi32) +elseif(APPLE) + target_sources(web-eid PRIVATE src/dialogs/macosxui.mm) + target_link_libraries(web-eid "-framework PCSC" "-framework ServiceManagement" "-framework CoreFoundation" "-framework AppKit") +endif() + +install(TARGETS web-eid DESTINATION ${INSTALL_BIN_PATH}) set(CPACK_PACKAGE_EXECUTABLES web-eid "Web eID for Windows") set(CPACK_PACKAGE_VENDOR "Evidos") @@ -73,23 +60,23 @@ set(CPACK_PACKAGE_DESCRIPTION "Web eID is the platform that makes your tradition set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/Evidos/web-eid") IF (WIN32) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" "LICENSE.txt" COPYONLY) - + configure_file(LICENSE LICENSE.txt COPYONLY) + set(CPACK_GENERATOR WIX) set(CPACK_WIX_UPGRADE_GUID "79730a31-61d7-4395-b91e-191279b08798") set(CPACK_RESOURCE_FILE_LICENSE "LICENSE.txt") #SET(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpack.wixpatch") SET(CPACK_WIX_TEMPLATE "${CMAKE_CURRENT_SOURCE_DIR}/wix.template.in") SET(CPACK_WIX_EXTENSIONS "WixUtilExtension") - + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/wix-banner.bmp") set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/wix-banner.bmp") endif() - + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/wix-dialog.bmp") set(CPACK_WIX_UI_DIALOG "${CMAKE_CURRENT_SOURCE_DIR}/wix-dialog.bmp") endif() - + include(DeployQt) windeployqt(web-eid ${INSTALL_BIN_PATH}) endif (WIN32)