spdlog静态库方式

原创
2019/06/19 19:07
阅读数 4.2K

spdlog新版本提供了静态库方式,这样比原来的header only方式显著提升了编译速度。

这里分析一下怎么使用: 根目录下的CMakeLists.txt中主要有如下内容:

...
include(cmake/ide.cmake) // 其中包含SPDLOG_ALL_HEADERS等变量
...
add_library(spdlog STATIC src/spdlog.cpp ${SPDLOG_ALL_HEADERS}) // 添加静态库编译对象
add_library(spdlog::spdlog ALIAS spdlog) // 别名
...
target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB) // 在对象中添加宏定义
...
find_package(Threads REQUIRED) 
...
target_link_libraries(spdlog_header_only INTERFACE Threads::Threads)

add_subdirectory(example) // 添加了子目录example

example目录下的CMakeLists.txt主要内容:

add_executable(example example.cpp)
target_link_libraries(example PRIVATE spdlog::spdlog) // 依赖了spdlog::spdlog,即spdlog,即静态库

example有两种编译方式:

  1. 一种是通过根目录的CMakeLists.txt引用example下的CMakeLists.txt可以编译
  2. 另一种是通过命令编译:g++ example.cpp ../src/spdlog.cpp -I../include -L.. -DSPDLOG_COMPILED_LIB -pthread
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部