aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-06-17 17:57:07 +0000
committerSaturneric <[email protected]>2021-06-17 17:57:07 +0000
commit7e218e5ddc1d8f7eb6008fae070335d759946356 (patch)
tree04cc5fa7b8397fa5ebb06f1824af8d04d6930fa4
parentMake it possible to compile and run on Windows. (diff)
downloadGpgFrontend-7e218e5ddc1d8f7eb6008fae070335d759946356.tar.gz
GpgFrontend-7e218e5ddc1d8f7eb6008fae070335d759946356.zip
Improve project configuration files.
Automatically copy resource files during project settings. Change the name of the build target to gpgfrontend. Automatic configuration of compilation information such as version number during project setting. Solve the problem that Windows cannot run normally.
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt58
-rw-r--r--gpgfrontend.ico (renamed from gpg4usb.ico)bin9662 -> 9662 bytes
-rw-r--r--gpgfrontend.qrc (renamed from gpg4usb.qrc)0
-rw-r--r--include/GpgFrontend.h43
-rw-r--r--include/GpgFrontend.h.in31
-rw-r--r--src/CMakeLists.txt27
-rw-r--r--src/gpg/CMakeLists.txt2
-rw-r--r--src/main.cpp8
8 files changed, 123 insertions, 46 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1e12853e..fc711633 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.19)
project(GPGFrontend VERSION 1.0.0 LANGUAGES CXX)
-message("GPGFrontend Build Confifgure Started.")
+message(STATUS "GPGFrontend Build Configuration Started CMAKE Version ${CMAKE_VERSION}")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -15,17 +15,54 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wall")
-set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O2")
+
+if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
+ message(STATUS "Build Type RELEASE")
+ set(CMAKE_CXX_FLAGS_RELEASE_INIT "-O2")
+else()
+ message(STATUS "Build Type DEBUG")
+ set(CMAKE_CXX_FLAGS_DEBUG_INIT "-Wall")
+endif()
+
+# Get Git Information
+
+set(GIT_COMMIT_HASH "")
+set(GIT_BRANCH_NAME "")
+find_package(Git QUIET)
+if(GIT_FOUND)
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} log -1 --pretty=format:%H
+ OUTPUT_VARIABLE COMMIT_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+ execute_process(
+ COMMAND ${GIT_EXECUTABLE} symbolic-ref --short -q HEAD
+ OUTPUT_VARIABLE BRANCH_NAME
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ )
+endif()
+
+
+set(BUILD_VERSION ${PROJECT_VERSION}_${CMAKE_SYSTEM}_${CMAKE_SYSTEM_PROCESSOR}_${CMAKE_BUILD_TYPE})
+set(GIT_VERSION ${PROJECT_NAME}_${GIT_COMMIT_HASH}_${GIT_COMMIT_HASH})
+string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S")
+
+message("Build Timestamp ${BUILD_TIMESTAMP}")
+message(STATUS "Build Version ${BUILD_VERSION}")
+message(STATUS "Git Version ${GIT_VERSION}")
IF (MINGW)
- message("OS Platform Microsoft Windows")
- message("Envrinoment MINGW")
+ message(STATUS "Configuration For OS Platform Microsoft Windows")
+ message(STATUS "Build Environment MINGW")
- set(CMAKE_EXE_LINKER_FLAGS "-static")
-
- include_directories(
+ set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
+
+ include_directories(
include
/mingw64/include
)
@@ -37,7 +74,7 @@ endif()
if(APPLE)
- message("OS Platform MacOS")
+ message(STATUS, "Configuration For OS Platform MacOS")
set(ENV{Qt5_DIR} /usr/local/opt/qt5/lib/cmake)
@@ -56,7 +93,8 @@ endif()
if(LINUX)
- message("OS Platform LINUX")
+ message(STATUS "Configuration For OS Platform LINUX")
+ set(Platform LINUX)
include_directories(
include
diff --git a/gpg4usb.ico b/gpgfrontend.ico
index 51c9b00c..51c9b00c 100644
--- a/gpg4usb.ico
+++ b/gpgfrontend.ico
Binary files differ
diff --git a/gpg4usb.qrc b/gpgfrontend.qrc
index 3eda5d57..3eda5d57 100644
--- a/gpg4usb.qrc
+++ b/gpgfrontend.qrc
diff --git a/include/GpgFrontend.h b/include/GpgFrontend.h
index 0568668b..3907449c 100644
--- a/include/GpgFrontend.h
+++ b/include/GpgFrontend.h
@@ -1,29 +1,5 @@
-/**
- * This file is part of GPGFrontend.
- *
- * GPGFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Foobar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from gpg4usb-team.
- * Their source code version also complies with GNU General Public License.
- *
- * The source code version of this software was modified and released
- * by Saturneric<[email protected]> starting on May 12, 2021.
- *
- */
-
-#ifndef GPG4USB_GPG4USB_H
-#define GPG4USB_GPG4USB_H
+#ifndef GPGFRONTEND_H_IN
+#define GPGFRONTEND_H_IN
#include <iostream>
#include <string>
@@ -39,4 +15,17 @@
#include <gpgme.h>
-#endif //GPG4USB_GPG4USB_H
+#define PROJECT_NAME "GPGFrontend"
+#define BUILD_VERSION "1.0.0_Windows-10.0.19042_AMD64_Debug"
+#define GIT_VERSION "GPGFrontend__"
+
+#define VERSION_MAJOR 1
+#define VERSION_MINOR 0
+#define VERSION_PATCH 0
+
+#define BUILD_TIMESTAMP "2021-06-18 01:49:12"
+
+#define GIT_BRANCH_NAME ""
+#define GIT_COMMIT_HASH ""
+
+#endif //GPGFRONTEND_H_IN
diff --git a/include/GpgFrontend.h.in b/include/GpgFrontend.h.in
new file mode 100644
index 00000000..6cf6c7af
--- /dev/null
+++ b/include/GpgFrontend.h.in
@@ -0,0 +1,31 @@
+#ifndef GPGFRONTEND_H_IN
+#define GPGFRONTEND_H_IN
+
+#include <iostream>
+#include <string>
+#include <cmath>
+#include <clocale>
+#include <cerrno>
+#include <utility>
+
+#include <QtCore>
+#include <QtWidgets>
+#include <QtNetwork/QtNetwork>
+#include <QtPrintSupport/QtPrintSupport>
+
+#include <gpgme.h>
+
+#define PROJECT_NAME "@PROJECT_NAME@"
+#define BUILD_VERSION "@BUILD_VERSION@"
+#define GIT_VERSION "@GIT_VERSION@"
+
+#define VERSION_MAJOR @CMAKE_PROJECT_VERSION_MAJOR@
+#define VERSION_MINOR @CMAKE_PROJECT_VERSION_MINOR@
+#define VERSION_PATCH @CMAKE_PROJECT_VERSION_PATCH@
+
+#define BUILD_TIMESTAMP "@BUILD_TIMESTAMP@"
+
+#define GIT_BRANCH_NAME "@GIT_BRANCH_NAME@"
+#define GIT_COMMIT_HASH "@GIT_COMMIT_HASH@"
+
+#endif //GPGFRONTEND_H_IN \ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0158ef6c..b4280fcc 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -4,10 +4,27 @@ add_subdirectory(ui)
aux_source_directory(. BASE_SOURCE)
file(GLOB_RECURSE GPG4USB_HEADER_FILES RELACTIVE ../include/* *.h)
-qt5_wrap_cpp(QT5_MOCS ${GPG4USB_HEADER_FILES} TARGET gpg4usb)
+qt5_wrap_cpp(QT5_MOCS ${GPG4USB_HEADER_FILES} TARGET gpgfrontend)
-add_executable(gpg4usb ${BASE_SOURCE} ../gpg4usb.qrc ${QT5_MOCS})
+# Set Build Information
+configure_file(${CMAKE_SOURCE_DIR}/include/GpgFrontend.h.in ${CMAKE_SOURCE_DIR}/include/GpgFrontend.h @ONLY)
+
+# Copy Resource File
+file(COPY ${CMAKE_SOURCE_DIR}/resource/ DESTINATION ${EXECUTABLE_OUTPUT_PATH}/ FOLLOW_SYMLINK_CHAIN)
+
+add_executable(gpgfrontend ${BASE_SOURCE} ${CMAKE_SOURCE_DIR}/gpgfrontend.qrc ${QT5_MOCS})
+
+IF (MINGW)
+ message(STATUS "Link Application Static Library For MINGW")完善工程设置
+ target_link_libraries(gpgfrontend
+ qtui gpg
+ Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core)
+
+
+else()
+ message(STATUS "Link Application Static Library For UNIX")
+ target_link_libraries(gpgfrontend
+ qtui gpg
+ Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core)
+endif()
-target_link_libraries(gpg4usb
- qtui gpg
- Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core)
diff --git a/src/gpg/CMakeLists.txt b/src/gpg/CMakeLists.txt
index 3213c457..a12f371f 100644
--- a/src/gpg/CMakeLists.txt
+++ b/src/gpg/CMakeLists.txt
@@ -8,11 +8,13 @@ set(UTILS_DIR ${CMAKE_SOURCE_DIR}/utils)
set(GPGME_LIB_DIR ${UTILS_DIR}/gpgme/lib)
IF (MINGW)
+ message(STATUS "Link GPG Static Library For MINGW")
target_link_libraries(gpg
gpgme gpg-error assuan
Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core
wsock32)
else()
+ message(STATUS "Link GPG Static Library For Unix")
target_link_libraries(gpg
gpgme gpg-error assuan
Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core)
diff --git a/src/main.cpp b/src/main.cpp
index 6cb84d25..7ce4a946 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -26,14 +26,14 @@
int main(int argc, char *argv[]) {
- Q_INIT_RESOURCE(gpg4usb);
+ Q_INIT_RESOURCE(gpgfrontend);
QApplication app(argc, argv);
// get application path
QString appPath = qApp->applicationDirPath();
- QApplication::setApplicationVersion("1.0.0");
+ QApplication::setApplicationVersion(BUILD_VERSION);
QApplication::setApplicationName("GPGFrontend");
// dont show icons in menus
@@ -67,11 +67,11 @@ int main(int argc, char *argv[]) {
lang = QLocale::system().name();
}
- translator.load("ts/gpg4usb_" + lang, appPath);
+ translator.load("./ts/gpg4usb_" + lang, appPath);
QApplication::installTranslator(&translator);
// set qt translations
- translator2.load("ts/qt_" + lang, appPath);
+ translator2.load("./ts/qt_" + lang, appPath);
QApplication::installTranslator(&translator2);
MainWindow window;