添加初始代码结构,包括C语言源文件、头文件、构建配置和格式化设置

This commit is contained in:
keqingmoe 2024-12-20 01:09:31 +08:00
parent f4a80d84d2
commit 7ef304a909
6 changed files with 129 additions and 0 deletions

57
.clang-format Normal file
View File

@ -0,0 +1,57 @@
BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Left
AlignConsecutiveDeclarations:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignConsecutiveAssignments:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: true
PadOperators: true
AlignConsecutiveMacros:
Enabled: false
AcrossEmptyLines: false
AcrossComments: false
AlignOperands: Align
AllowAllParametersOfDeclarationOnNextLine: true
AllowAllArgumentsOnNextLine: false
AllowShortLambdasOnASingleLine: Empty
AllowShortFunctionsOnASingleLine: Empty
AllowShortBlocksOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: AllIfsAndElse
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakTemplateDeclarations: "Yes"
BinPackArguments: false
BinPackParameters: false
BreakBeforeBraces: Custom
BreakBeforeBinaryOperators: NonAssignment
ColumnLimit: 120
CommentPragmas: "^ IWYU pragma:"
ConstructorInitializerIndentWidth: 4
IndentWidth: 4
Language: Cpp
MaxEmptyLinesToKeep: 2
PointerAlignment: Left
TabWidth: 4
UseTab: Never
SortIncludes: CaseSensitive
BraceWrapping:
AfterEnum: true
AfterStruct: true
AfterClass: true
AfterUnion: true
AfterExternBlock: true
AfterFunction: true
AfterNamespace: true
IndentRequires: true
FixNamespaceComments: false
NamespaceIndentation: None
BreakBeforeConceptDeclarations: Always
RequiresClausePosition: OwnLine
IndentRequiresClause: true
AllowBreakBeforeNoexceptSpecifier: OnlyWithParen

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
.cache/
.vscode/
.xmake/
build/
compile_commands.json

8
include/kqm/defs.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef KQM_DEFS_H
#define KQM_DEFS_H
#define CR "\r"
#define LF "\n"
#define CRLF "\r\n"
#endif // KQM_DEFS_H

11
include/kqm/types.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef KQM_TYPES_H
#define KQM_TYPES_H
#include <civetweb.h>
typedef struct mg_callbacks mg_callbacks;
typedef struct mg_context mg_context;
typedef struct mg_connection mg_connection;
typedef struct mg_request_info mg_request_info;
#endif // KQM_TYPES_H

21
src/main.c Normal file
View File

@ -0,0 +1,21 @@
#include <civetweb.h>
#include <kqm/defs.h>
#include <kqm/types.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
const char* options[] = {"document_root", "./www", "listening_ports", "8080", NULL};
mg_callbacks callbacks;
mg_context* ctx;
memset(&callbacks, 0, sizeof(callbacks));
ctx = mg_start(&callbacks, NULL, options);
printf("Server started on port(s) %s\n", mg_get_option(ctx, "listening_ports"));
getchar();
mg_stop(ctx);
}

27
xmake.lua Normal file
View File

@ -0,0 +1,27 @@
add_rules("mode.debug", "mode.release")
add_rules("plugin.compile_commands.autoupdate")
set_languages("c23")
set_warnings("all")
set_warnings("error")
add_requires("civetweb")
target("math")
set_kind("binary")
add_packages("civetweb")
add_includedirs("include")
add_files("src/main.c")
after_build(function (target)
local npm = "npm"
if is_host("windows") then
npm = "npm.cmd"
end
os.execv(npm, {"--prefix", "ui", "run", "build"})
local vue_dist_dir = "ui/dist"
local target_dir = target:targetdir() .. "/www"
os.cp(vue_dist_dir, target_dir)
end)