如何使用cmake正确地将libgit2链接到C程序?

时间:2013-10-20 16:03:40

标签: c windows cmake libgit2

首先,我只是一个CMake魔术新手。我只是想以CMake方式(FindLibgit2.cmake)将libgit2链接到我的简单C程序。 据我所知cmake documentation我的CMakeLists.txt看起来应该是这样的:

project(libgit2test)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
# This variables should be setting up externally, i know - i show them just for example
set (LIBGIT2_LIBRARIES "<path to directory with git2.lib and git2.dll")
set (LIBGIT2_INCLUDE_DIR "<path to libgit2/include>")

find_package(Libgit2 REQUIRED)
include_directories(${LIBGIT2_INCLUDE_DIR})
set(LIBS ${LIBS} ${LIBGIT2_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${LIBS})

在我的简单程序中,我只需调用几个简单的libgit2函数即可: WARNING: Target "libgit2test" requests linking to directory "<libgit2 build directory>". Targets may link only to libraries. CMake is dropping the item.

我认为问题在于:target_link_libraries(${PROJECT_NAME} {$LIBS}) 我尝试将其更改为git2,但我得到can not open file。 我做错了什么?

P.S。我正在使用Visual Studio 2010编译器,Qt Creator创建CMake项目,并使用CMake成功构建libgit2

2 个答案:

答案 0 :(得分:0)

删除

set (LIBGIT2_LIBRARIES "<path to directory with git2.lib and git2.dll")
set (LIBGIT2_INCLUDE_DIR "<path to libgit2/include>")

这些变量应由find_package(Libgit2 REQUIRED)设置。

答案 1 :(得分:0)

我找到了问题的根源:变量LIBGIT2_LIBRARIES必须指向lib文件本身,而不是它的目录(调试/发布)。 但是,手动设置此变量看起来像有线。我想找到更多“自动”方式来查找libgit2 - 如果存在的话。