将库添加到 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 个选项供您选择:
- 如果您已经下载并能够构建和安装它,您稍后可以尝试在您的 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)
也许我根本找不到它,但我想在我的一个项目中添加一些代码(libunwind 在这里找到http://www.nongnu.org/libunwind/download.html)
这个库没有附带 CMakeLists.txt 文件,当我尝试包含它时,cmake 抱怨这个事实。现在,我只是将 libunwind 目录添加到我的外部代码中,并在我的 main CMakeLists.txt
任何输入都很好。
如果您希望每次都与您的项目一起构建它,最简单的方法是:
- 将源代码添加到项目树的某处
- 在编译开始前添加一个custom CMake target应该运行
- 在该自定义目标中,运行 编译库所需的一切(在您的情况下是 ./configure -> make -> make install。
然而这很少需要,大多数时候你应该只构建一次库然后 link 它就像任何其他外部库一样。
处理库有 2 个选项供您选择:
- 如果您已经下载并能够构建和安装它,您稍后可以尝试在您的 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)