1

也许我根本找不到它,但我想在我的项目中添加一些代码(libunwind 在这里找到http://www.nongnu.org/libunwind/download.html
这个库没有 CMakeLists。 txt 文件,当我尝试包含它时,cmake 抱怨这个事实。现在我只是将 libunwind 目录添加到我的外部代码中,并在我的主 CMakeLists.txt 中添加了一个引用

任何输入都会很棒。

4

2 回答 2

6

处理图书馆有两种选择:

  1. 如果您已经下载并能够构建和安装它,您可以稍后尝试在您的 CMAKE 中找到它(在 Boost 的情况下)并链接到您的目标:

find_package( Boost COMPONENTS date_time system serialization thread program_options filesystem unit_test_framework regex chrono REQUIRED )

if( NOT Boost_FOUND ) message( FATAL_ERROR "Cannot find boost!" ) endif( NOT Boost_FOUND )

message(STATUS "boost found")

include_directories( ${Boost_INCLUDE_DIRS} ) link_directories( ${Boost_LIBRARY_DIRS} )

target_link_libraries(YOUR_TARGET_NAME ${Boost_LIBRARIES})

2.您可以将外部库源添加为独立目标,并像这样使用 CMake 来构建它:

set (sources
  async_waiter.h
  async_waiter_impl.h
  async_waiter_impl.cpp
)

add_library( async_waiter ${sources} )

稍后在您的目标链接上:

target_link_libraries(YOUR_TARGET_NAME async_waiter)
于 2016-12-20T14:41:42.050 回答
2

如果您想每次都与您的项目一起构建它,最简单的方法是:

  • 将源代码添加到项目树的某处
  • 添加应在编译开始之前运行的自定义 CMake 目标
  • 在该自定义目标中,运行编译库所需的任何内容(在您的情况下,它是 ./configure -> make -> make install.

然而,这很少需要,大多数时候您应该只构建一次库并将其链接为任何其他外部库。

于 2016-12-20T14:16:16.760 回答