Skip to content

ChillyWall/Music-Managing-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

音乐信息管理系统

该项目为程序设计基础实验中的实验。

该项目用于管理音乐信息。

依赖

该项目使用sqlite3作为数据库,请确保已安装sqlite3相关依赖。

安装依赖

Linux(以Ubuntu为例)

直接使用包管理器安装sqlite3相关库。

sudo apt install sqlite3 libsqlite3-dev

之后sqlite3.h和其他库文件就被成功安装到系统中,cmake的find_package功能即可正常运行。

若使用其他方法安装sqlite3,只需保证相应的文件在cmake的搜索目录中即可,可以通过设置CMAKE_INCLUDE_PATH, CMAKE_LIBRARY_PATHLD_LIBRARY_PATH 环境变量添加头文件(.h),静态库(.a)和动态库文件(.so)的存放位置。

Windows

Windows下可以直接在官网上下载编译好的二进制文件,其中包括sqlite3.dllsqlite3.def文件, 可以使用 dlltool(MinGW64提供)或lib(MSVC提供)命令生成sqlite3.lib文件。

dlltool -D sqlite3.dll -d sqlite3.def -l sqlite3.lib

lib /DEF:sqlite3.def /OUT:sqlite3.lib

要构建项目还需要头文件sqlite3.h,需要下载SQLite官网上的源文件,其中就包括该文件。

之后配置环境变量CMAKE_INCLUDE_PATHCMAKE_LIBRARY_PATH,将sqlite3.h文件和sqlite3.lib文件的地址加入其中, 再配置环境变量PATH,将sqlite3.dll文件的目录加入其中。

之后cmake便可以正常找到安装的SQLite3库了。

构建

该项目使用cmake构建。目前在Linux下使用gcc或clang,在Windows下使用MinGW64, clang或MSVC均可正确构建。

下面是构建示例,该命令将构建输出目录设置为build文件夹,生成器设置为Ninja,安装目录为用户目录下的MusicManagingSystem文件夹。

# 将工作目录切换为该项目的根目录
cd path/to/root
# 进行配置
cmake . -B build -G Ninja -DCMAKE_INSTALL_PREFIX="~/MusicManagementSystem"
# 进行构建
cmake --build build

推荐使用Ninja作为构建工具,亦可选择其他构建工具。

安装

运行cmake的install命令,将程序安装到上一步指定的目录。可使用下面的命令。

cmake --install build

在Windows下,动态库文件会被安装到上面指定文件夹下的bin文件夹中,程序会寻找同目录下的.dll文件。

在Linux系统中,动态库文件会被安装到下面的lib文件夹下,要使程序可以找到lib文件夹中的.so文件, 可以将lib目录添加到环境变量LD_LIBRARY_PATH中,或者将程序安装到系统目录中。

修改环境变量可以使用下面语句:

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:path/to/MusicManagementSystem/lib"

使用

运行MusicManagementSystem(.exe)即可运行程序,会在当前环境的HOME(Unix、mac)或USERPROFILE(Windows)目录下创建一个SQLite3数据库文件data.sqlite3, 若读取系统中环境变量失败,则会在当前目录下创建。

Windows的cmd和powershell等会使用系统默认语言的编码(中文系统为GBK)处理输入输出,而SQLite3数据库使用UTF-8, 这会造成中文乱码的问题。

故Windows环境下,在cmd中使用需要设置utf-8编码以处理中文,可通过如下指令切换编码页:

chcp 65001

powershell中需要设置输入输出编码均为utf-8。设置编码的命令为:

[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
[Console]::InputEncoding = [System.Text.UTF8Encoding]::new()

Windows默认的Terminal通过以上指令可以做到正确处理中文,但如果使用其他终端模拟器如alacrity,可能仍会出现乱码, 最简单的解决方法是使用Windows Terminal来运行。

Linux环境下一般默认使用utf-8编码,无需手动设置,即可正常使用(以Ubuntu20, 22为例)。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published