将库添加到Cmake项目

时间:2016-12-20 14:01:32

标签: c++ build cmake libunwind

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

任何输入都会很棒。

2 个答案:

答案 0 :(得分:4)

处理库有两种选择:

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

    find_package(Boost COMPONENTS date_time系统序列化线程program_options文件系统unit_test_framework regex chrono REQUIRED)

    if(NOT Boost_FOUND)     消息(FATAL_ERROR"无法找到提升!") endif(NOT Boost_FOUND)

    消息(STATUS" boost found")

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

    target_link_libraries(YOUR_TARGET_NAME $ {Boost_LIBRARIES})

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

    设置(来源   async_waiter.h   async_waiter_impl.h   async_waiter_impl.cpp )

    add_library(async_waiter $ {sources})

  3. 以及稍后使用以下链接定位的链接:

    target_link_libraries(YOU_TARGET_NAME async_waiter)
    

答案 1 :(得分:2)

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

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

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