Windows 10 x64下libgit2 Release模式编译失败求助
解决Windows 10 x64下libgit2始终编译为Debug模式的问题
我之前在Windows下编译libgit2时也踩过这个坑,其实问题出在Visual Studio生成器下CMake的配置逻辑上,给你一步步拆解解决方案:
先彻底清理旧编译缓存
残留的缓存很容易导致配置不生效,先删掉整个build目录:rmdir /s /q build mkdir build && cd build正确生成VS项目并指定Release编译
Visual Studio是多配置项目,CMAKE_BUILD_TYPE参数在这种生成器下不会直接生效,必须在编译阶段指定配置:- 生成适配VS2013 x64的项目文件:
(注意VS版本的写法,cmake -G "Visual Studio 12 2013 Win64" ..Visual Studio 12对应VS2013,加上年份和Win64更准确) - 编译时必须加上
--config Release参数:
或者直接用MSBuild命令更直观:cmake --build . --config Releasemsbuild libgit2.sln /p:Configuration=Release /p:Platform=x64
- 生成适配VS2013 x64的项目文件:
确认编译产物的路径
编译完成后,Release版本的库文件会在build/Release目录下(比如libgit2.lib或libgit2.dll),Debug版本则在build/Debug,一定要用Release目录下的文件。链接VS项目时的关键匹配
- 确保你的Visual Studio项目也是Release x64模式,和libgit2的编译配置完全一致,混合模式必然触发断言失败
- 在项目属性中:
- 「C/C++ → 常规 → 附加包含目录」添加libgit2根目录下的
include文件夹 - 「链接器 → 常规 → 附加库目录」指向
build/Release - 「链接器 → 输入 → 附加依赖项」添加
libgit2.lib
- 「C/C++ → 常规 → 附加包含目录」添加libgit2根目录下的
额外排查点
如果还是不行,打开build/CMakeCache.txt,搜索CMAKE_BUILD_TYPE,看看是不是被强制设为Debug了,如果是,删除这个文件重新生成项目;另外别手动把.vxcproj添加到解决方案,直接用CMake生成的sln文件编译更可靠,手动添加容易导致配置混乱。
内容的提问来源于stack exchange,提问作者Carson
相关产品推荐
相关产品推荐

