未命名包时如何集成 C++ 库
How to integrate C++ library when its package is not named
C++ 和 CMake 新手问题,关于如何将第三方库集成到我自己的代码中。我正在尝试将 Datadog 指标添加到 C++ 应用程序。 officially-endorsed library 没有说明如何集成。我想它应该告诉我如何像这样导入它:
find_package(<PACKAGE> REQUIRED)
add_executable(foobar src/main.cpp)
target_include_directories(foobar PUBLIC ${<PACKAGE_DIRECTORIES>})
target_link_libraries(foobar ${<PACKAGE_LIBRARIES>})
这是我对如何集成第三方库的理解(难道你不希望C++有“pip”吗?)。但是 <> 中的名称在 README 中没有提供。只要我可以使用 CMake,我当然不必这样做。感谢您的帮助!
简单的解决方案是直接获取此库并执行 add_subdirectory
。但这需要 cmake >= 3.11.
创建目录 cmake
和文件 cmake/cpp-datadogstatsd.cmake
cpp-datadogstatsd.cmake
:
FetchContent_Declare(
datadogstatsd
GIT_REPOSITORY https://github.com/BoardiesITSolutions/cpp-datadogstatsd
# try v1.1.0.5 if this does not work
GIT_TAG 1.1.0.5
)
FetchContent_GetProperties(datadogstatsd)
if(NOT datadogstatsd_POPULATED)
message(STATUS "Downloading datadogstatsd...")
FetchContent_Populate(datadogstatsd)
add_subdirectory(${datadogstatsd_SOURCE_DIR} ${datadogstatsd_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
然后,包含此 cmake 文件,并将 link DataDogStatsD_static
添加到您的 lib/exe:
include(cmake/cpp-datadogstatsd.cmake)
add_executable(test main.cpp)
target_link_libraries(test DataDogStatsD_static)
C++ 和 CMake 新手问题,关于如何将第三方库集成到我自己的代码中。我正在尝试将 Datadog 指标添加到 C++ 应用程序。 officially-endorsed library 没有说明如何集成。我想它应该告诉我如何像这样导入它:
find_package(<PACKAGE> REQUIRED)
add_executable(foobar src/main.cpp)
target_include_directories(foobar PUBLIC ${<PACKAGE_DIRECTORIES>})
target_link_libraries(foobar ${<PACKAGE_LIBRARIES>})
这是我对如何集成第三方库的理解(难道你不希望C++有“pip”吗?)。但是 <> 中的名称在 README 中没有提供。只要我可以使用 CMake,我当然不必这样做。感谢您的帮助!
简单的解决方案是直接获取此库并执行 add_subdirectory
。但这需要 cmake >= 3.11.
创建目录 cmake
和文件 cmake/cpp-datadogstatsd.cmake
cpp-datadogstatsd.cmake
:
FetchContent_Declare(
datadogstatsd
GIT_REPOSITORY https://github.com/BoardiesITSolutions/cpp-datadogstatsd
# try v1.1.0.5 if this does not work
GIT_TAG 1.1.0.5
)
FetchContent_GetProperties(datadogstatsd)
if(NOT datadogstatsd_POPULATED)
message(STATUS "Downloading datadogstatsd...")
FetchContent_Populate(datadogstatsd)
add_subdirectory(${datadogstatsd_SOURCE_DIR} ${datadogstatsd_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
然后,包含此 cmake 文件,并将 link DataDogStatsD_static
添加到您的 lib/exe:
include(cmake/cpp-datadogstatsd.cmake)
add_executable(test main.cpp)
target_link_libraries(test DataDogStatsD_static)