将库添加到 Cmake 项目

Add library to Cmake project

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

中添加了一个引用

任何输入都很好。

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

  • 将源代码添加到项目树的某处
  • 在编译开始前添加一个custom CMake target应该运行
  • 在该自定义目标中,运行 编译库所需的一切(在您的情况下是 ./configure -> make -> make install。

然而这很少需要,大多数时候你应该只构建一次库然后 link 它就像任何其他外部库一样。

处理库有 2 个选项供您选择:

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

find_package( Boost COMPONENTS date_time system serialization thread program_options filesystem unit_test_framework regex chrono REQUIRED )</p>

<p>if( NOT Boost_FOUND )
    message( FATAL_ERROR "Cannot find boost!" )
endif( NOT Boost_FOUND )</p>

<p>message(STATUS "boost found")</p>

<p>include_directories( ${Boost_INCLUDE_DIRS} )
link_directories( ${Boost_LIBRARY_DIRS} )</p>

<p>target_link_libraries(YOUR_TARGET_NAME ${Boost_LIBRARIES})</pre>
2. 您可以将外部库源添加为独立目标,并像这样使用 smth 为 CMake 构建它:

set (sources
  async_waiter.h
  async_waiter_impl.h
  async_waiter_impl.cpp
)</p>

<p>add_library( async_waiter ${sources} )</pre>

之后 link 您可以使用 :

定位到它
target_link_libraries(YOUR_TARGET_NAME async_waiter)