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