如何通过 cmake 包含 libgit2

Arw*_*ett 5 cmake libgit2

我如何将 libgit2 作为库包含在 cmake 中。我已经从 github 克隆了 libgit2 存储库。比我跑的

mkdir build && cd build
cmake ..
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

我在 /usr/local/include/git2/ 和 /usr/local/include 下找到了安装的文件。

我现在必须在我的 cmake 文件中放入什么?

小智 2

这是一个根据您自己的项目定制的示例:

将以下内容添加到顶级 CMakeLists.txt:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
find_package(git2 REQUIRED)
include_directories(${GIT2_INCLUDE_DIR})

add_executable(lg2 main.c) # can be add_library, etc.

target_link_libraries(lg2 ${GIT2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

创建一个名为 cmake 的目录,然后在其中创建一个名为 Findgit2.cmake 的文件,并向其中添加以下内容:

# Find git2 Library
#
#  GIT2_INCLUDE_DIRS - where to find git2.h, etc.
#  GIT2_LIBRARIES    - List of libraries when using libgit2.
#  GIT2_FOUND        - True if libgit2 is found.

# GIT2_INCLUDE_PATH
find_path(GIT2_INCLUDE_PATH NAMES git2.h)
# GIT2_LIBRARY
find_library(GIT2_LIBRARY NAMES git2)

# handle the QUIETLY and REQUIRED arguments and set GIT2_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(libgit2 REQUIRED_VARS GIT2_LIBRARY GIT2_INCLUDE_PATH)


if (GIT2_FOUND)
  set(GIT2_INCLUDE_DIR  ${GIT2_INCLUDE_PATH})
  set(GIT2_INCLUDE_DIRS ${GIT2_INCLUDE_PATH})
  set(GIT2_LIBRARIES    ${GIT2_LIBRARY})
endif()

mark_as_advanced(
  GIT2_INCLUDE_PATH
  GIT2_LIBRARY
)
Run Code Online (Sandbox Code Playgroud)