fix: build on windows

This commit is contained in:
TaurusXin 2025-10-04 14:45:22 +08:00
parent 5f28bb4dc6
commit ccff2dde9a
5 changed files with 39 additions and 11 deletions

4
.gitignore vendored
View File

@ -6,4 +6,6 @@ ncmdump
build
cmake-build-*
cmake-build-*
vcpkg_installed

View File

@ -5,6 +5,7 @@ project(ncmdump LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(ZLIB)
find_package(TagLib REQUIRED)
if(MSVC)
@ -33,6 +34,24 @@ if(WIN32)
${WIN_SOURCES}
)
if(MSVC)
# Debug/Release 使 C
foreach(flag_var
CMAKE_CXX_FLAGS
CMAKE_C_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
)
if(${flag_var})
string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
endif()
endforeach()
endif()
target_include_directories(ncmdump_lib PRIVATE src/include)
target_compile_definitions(ncmdump_exec PRIVATE TAGLIB_STATIC)
set_target_properties(ncmdump_lib PROPERTIES OUTPUT_NAME "libncmdump")
target_link_libraries(ncmdump_lib TagLib::tag)
@ -49,6 +68,7 @@ endif()
set_target_properties(ncmdump_exec PROPERTIES OUTPUT_NAME "ncmdump")
target_include_directories(ncmdump_exec PRIVATE src/include)
# link to taglib
target_link_libraries(ncmdump_exec TagLib::tag)
include(GNUInstallDirs)

View File

@ -79,20 +79,18 @@ git clone https://github.com/taurusxin/ncmdump.git
使用 CMake 配置项目。Windows 下若使用 GNU 套件,推荐使用 [msys2](https://www.msys2.org/) 或者 [winlibs](https://winlibs.com/)
注意:从 1.6 版本开始CMake 构建不再依赖于 gitsubmodule因此无需再克隆 `taglib` 仓库,改为使用系统的 taglib 库,针对不同系统上的构建,请参照如下方法
注意:从 1.6 版本开始CMake 构建不再依赖于 gitmodule因此无需再克隆 `taglib` 仓库,改为使用系统的 taglib 库,针对不同系统上的构建,请参照如下方法
### Windows
Windows 下,你可以使用 vcpkg 来安装 taglib 库,或者手动下载 taglib 的源码,并使用 CMake 来构建 taglib 库
vcpkg
Windows 下,首先使用 vcpkg 来安装 taglib 库,或者手动下载 taglib 的源码,参照[官方文档](https://github.com/taglib/taglib/blob/master/INSTALL.md#building-taglib-msvc)使用 CMake 来构建 taglib 库,当然还需要额外安装依赖。当然首选还是推荐使用 vcpkg 来管理依赖。
```shell
# 安装 taglib 库
vcpkg install taglib:x64-windows
# 安装 taglib 的静态
vcpkg install taglib:x64-windows-static
# 配置项目
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\vcpkg.cmake -B build
# 配置项目,替换 %VCPKG_ROOT% 为你的 vcpkg 安装路径
cmake -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake -B build
# 编译项目
cmake --build build -j 8 --config Release

View File

@ -25,15 +25,16 @@ const unsigned char NeteaseCrypt::mPng[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A,
static void aesEcbDecrypt(const unsigned char *key, std::string &src, std::string &dst)
{
int i, n;
unsigned char out[16];
const int n = src.length() >> 4;
n = src.length() >> 4;
dst.clear();
AES aes(key);
for (int i = 0; i < n - 1; i++)
for (i = 0; i < n - 1; i++)
{
aes.decrypt((unsigned char *)src.c_str() + (i << 4), out);
dst += std::string((char *)out, 16);

7
vcpkg.json Normal file
View File

@ -0,0 +1,7 @@
{
"name": "ncmdump",
"version": "1.6.0",
"dependencies": [
"taglib"
]
}