diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..4ed25d6 --- /dev/null +++ b/.clang-format @@ -0,0 +1,17 @@ +# .clang-format + +# 风格格式化 +BasedOnStyle: Google +# 4 空格缩进 +IndentWidth: 4 +# 连续对齐变量的声明 +AlignConsecutiveDeclarations: true +# 指针左侧对齐 +PointerAlignment: Left +# 访问说明符(public、private等)的偏移 +AccessModifierOffset: -4 +# 大括号 +BreakBeforeBraces: Custom +BraceWrapping: + # 函数定义后面大括号在新行 + AfterFunction: true diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..11d6e06 --- /dev/null +++ b/.clangd @@ -0,0 +1,12 @@ +Hover: + ShowAKA: Yes +Diagnostics: + UnusedIncludes: None # 禁用未使用头文件提示 + Suppress: [ + anon_type_definition, # 禁用匿名的typedef提示 + unused-variable, # 禁用未使用变量提示 + unused-function, # 禁用未使用函数提示 + unused-includes, # 禁用未使用的头文件提示 + ] + ClangTidy: + Remove: misc-unused-alias-decls diff --git a/.gitignore b/.gitignore index 259148f..d2cf82b 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ *.exe *.out *.app +build +CMakeLists.txt.use* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..bbea7f1 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.5) + +project(nettrans LANGUAGES CXX) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_PREFIX_PATH + "C:/Dev/GNU/Boost" + "C:/Qt/Qt5.14.2/5.14.2/mingw73_64" +) + +if (MSVC) + if (GBK) + add_compile_options(/source-charset:utf-8) + else() + add_compile_options(/utf-8) + endif() + # 以下抑制,主要作用与三方库。 + add_compile_options(/wd4018) #有符号与无符号的比较 + add_compile_options(/wd4800) #将值强制为布尔值“true”或“false”(性能警告) +endif() + +if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") + MESSAGE(STATUS "Add MinGW Param.") + add_compile_options(-finput-charset=utf-8) + add_compile_options(-fexec-charset=utf-8) +endif() + +message(STATUS "System: ${CMAKE_SYSTEM_NAME}") +message(STATUS "Compiler C ID: ${CMAKE_CXX_COMPILER_ID}") +message(STATUS "Compiler CXX ID: ${CMAKE_CXX_COMPILER_ID}") + +set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) + +add_subdirectory(net_server) +add_subdirectory(net_com) +add_subdirectory(net_client) diff --git a/net_client/.gitignore b/net_client/.gitignore new file mode 100644 index 0000000..4a0b530 --- /dev/null +++ b/net_client/.gitignore @@ -0,0 +1,74 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* +CMakeLists.txt.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + diff --git a/net_client/CMakeLists.txt b/net_client/CMakeLists.txt new file mode 100644 index 0000000..617a919 --- /dev/null +++ b/net_client/CMakeLists.txt @@ -0,0 +1,45 @@ +cmake_minimum_required(VERSION 3.5) + +project(net_client LANGUAGES CXX) + +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) + +set(PROJECT_SOURCES + main.cpp + mainwidget.cpp + mainwidget.h + mainwidget.ui +) + +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(net_client + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET net_client APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(net_client SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(net_client + ${PROJECT_SOURCES} + ) + endif() +endif() + +target_link_libraries(net_client PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) diff --git a/net_client/main.cpp b/net_client/main.cpp new file mode 100644 index 0000000..a0f002b --- /dev/null +++ b/net_client/main.cpp @@ -0,0 +1,11 @@ +#include "mainwidget.h" + +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWidget w; + w.show(); + return a.exec(); +} diff --git a/net_client/mainwidget.cpp b/net_client/mainwidget.cpp new file mode 100644 index 0000000..fec3eff --- /dev/null +++ b/net_client/mainwidget.cpp @@ -0,0 +1,14 @@ +#include "mainwidget.h" +#include "./ui_mainwidget.h" + +MainWidget::MainWidget(QWidget *parent) + : QWidget(parent) + , ui(new Ui::MainWidget) +{ + ui->setupUi(this); +} + +MainWidget::~MainWidget() +{ + delete ui; +} diff --git a/net_client/mainwidget.h b/net_client/mainwidget.h new file mode 100644 index 0000000..a186878 --- /dev/null +++ b/net_client/mainwidget.h @@ -0,0 +1,23 @@ +#ifndef MAINWIDGET_H +#define MAINWIDGET_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWidget; +} +QT_END_NAMESPACE + +class MainWidget : public QWidget +{ + Q_OBJECT + +public: + MainWidget(QWidget *parent = nullptr); + ~MainWidget(); + +private: + Ui::MainWidget *ui; +}; +#endif // MAINWIDGET_H diff --git a/net_client/mainwidget.ui b/net_client/mainwidget.ui new file mode 100644 index 0000000..74273fb --- /dev/null +++ b/net_client/mainwidget.ui @@ -0,0 +1,19 @@ + + + MainWidget + + + + 0 + 0 + 800 + 600 + + + + MainWidget + + + + + diff --git a/net_com/CMakeLists.txt b/net_com/CMakeLists.txt new file mode 100644 index 0000000..ec4e912 --- /dev/null +++ b/net_com/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required (VERSION 3.8) +project (net_com) +set(CMAKE_CXX_STANDARD 11) + + +add_library(net_com STATIC net_com.h net_com.cpp) diff --git a/net_com/net_com.cpp b/net_com/net_com.cpp new file mode 100644 index 0000000..cce19b9 --- /dev/null +++ b/net_com/net_com.cpp @@ -0,0 +1,3 @@ +#include "net_com.h" + +CCommunicate::CCommunicate(){} \ No newline at end of file diff --git a/net_com/net_com.h b/net_com/net_com.h new file mode 100644 index 0000000..46f229e --- /dev/null +++ b/net_com/net_com.h @@ -0,0 +1,9 @@ +#ifndef NET_COM_HEADER +#define NET_COM_HEADER + +class CCommunicate { +public: + CCommunicate(); +}; + +#endif diff --git a/net_server/CMakeLists.txt b/net_server/CMakeLists.txt new file mode 100644 index 0000000..d243943 --- /dev/null +++ b/net_server/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required (VERSION 3.8) +project (net_server) +set(CMAKE_CXX_STANDARD 11) + +include_directories(../net_com) + +add_executable(net_server main.cpp net_server.cpp net_server.h) +target_link_libraries(net_server PRIVATE net_com) diff --git a/net_server/main.cpp b/net_server/main.cpp new file mode 100644 index 0000000..5b0f4f7 --- /dev/null +++ b/net_server/main.cpp @@ -0,0 +1,9 @@ +#include "net_server.h" +#include + +int main() { + CNetServer server; + server.run(); + std::cout << "Done" << std::endl; + return 0; +} diff --git a/net_server/net_server.cpp b/net_server/net_server.cpp new file mode 100644 index 0000000..2d1429f --- /dev/null +++ b/net_server/net_server.cpp @@ -0,0 +1,8 @@ +#include "net_server.h" + +CNetServer::CNetServer(){} + +void CNetServer::run() +{ + +} diff --git a/net_server/net_server.h b/net_server/net_server.h new file mode 100644 index 0000000..619ffcd --- /dev/null +++ b/net_server/net_server.h @@ -0,0 +1,17 @@ +#ifndef NET_SERVER_HEADER +#define NET_SERVER_HEADER + +#include "net_com.h" + +class CNetServer +{ +public: + CNetServer(); + +public: + void run(); +private: + CCommunicate communi_{}; +}; + +#endif