libgit2 未在 windows 上以发布模式构建
libgit2 is not building in release mode on windows
我正在尝试在 Windows 10 x64 上以发布模式构建 libgit2。
在我的 libgit2 目录中,我 运行 以下内容:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
据我所知,它仍然以调试模式构建。至少当我 link 它进入 Visual Studio 项目时,它在调试断言时失败了。
我也试过了
cmake -G "Visual Studio 12 Win64" -DCMAKE_BUILD_TYPE=Release ..
无济于事。
我什至试图通过在我的解决方案中包含所有 .vxcproj
文件并在发布模式下手动构建它们来让它工作。还没有运气。
是否应该像传递 -DCMAKE_BUILD_TYPE=Release
标志一样简单,还是我遗漏了什么?
我真正想做的就是防止 git2.dll
在我 运行 时在调试断言上爆炸。至少我认为这就是正在发生的事情。
这是我在 Visual Studio 2013 项目中尝试 运行 的代码,我在 link 中编辑了 git2.lib
并引用了 git2.dll
如前所述 here
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
const char *path = "C:/Dev/testing/brokenmerge";
git_repository *repo = NULL;
git_repository_open(&repo, path);
printf("Opened repo: '%s'\n", path);
git_repository_free(repo);
return 0;
}
其中 stdafx.h
包括 <git2.h>
我在 git_repository_open
中得到以下断言错误:
Assertion failed!
Program: C:\Dev\testing\libgit2tests\Debug\git2.dll
File: C:\Dev\libgit2\src\global.c
Line: 202
Expression: git_atomic_get(&git__n_inits) > 0
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts
所以除非我 link 错误地 git2
或者我做错了其他事情,否则我不知道如何继续。
谢谢!
您需要在调用任何其他 libgit2 函数之前调用 git_libgit2_init
。这设置了库需要的全局状态。
我也有这种痛苦。
答案是
cmake --build . --config Release
见CMAKE_BUILD_TYPE not being used in CMakeLists.txt
我正在尝试在 Windows 10 x64 上以发布模式构建 libgit2。
在我的 libgit2 目录中,我 运行 以下内容:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
据我所知,它仍然以调试模式构建。至少当我 link 它进入 Visual Studio 项目时,它在调试断言时失败了。
我也试过了
cmake -G "Visual Studio 12 Win64" -DCMAKE_BUILD_TYPE=Release ..
无济于事。
我什至试图通过在我的解决方案中包含所有 .vxcproj
文件并在发布模式下手动构建它们来让它工作。还没有运气。
是否应该像传递 -DCMAKE_BUILD_TYPE=Release
标志一样简单,还是我遗漏了什么?
我真正想做的就是防止 git2.dll
在我 运行 时在调试断言上爆炸。至少我认为这就是正在发生的事情。
这是我在 Visual Studio 2013 项目中尝试 运行 的代码,我在 link 中编辑了 git2.lib
并引用了 git2.dll
如前所述 here
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
const char *path = "C:/Dev/testing/brokenmerge";
git_repository *repo = NULL;
git_repository_open(&repo, path);
printf("Opened repo: '%s'\n", path);
git_repository_free(repo);
return 0;
}
其中 stdafx.h
包括 <git2.h>
我在 git_repository_open
中得到以下断言错误:
Assertion failed!
Program: C:\Dev\testing\libgit2tests\Debug\git2.dll
File: C:\Dev\libgit2\src\global.c
Line: 202
Expression: git_atomic_get(&git__n_inits) > 0
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts
所以除非我 link 错误地 git2
或者我做错了其他事情,否则我不知道如何继续。
谢谢!
您需要在调用任何其他 libgit2 函数之前调用 git_libgit2_init
。这设置了库需要的全局状态。
我也有这种痛苦。 答案是
cmake --build . --config Release
见CMAKE_BUILD_TYPE not being used in CMakeLists.txt