标签:-- app CXX spdlog linux cpp root build
之前项目中使用的spdlog 库,但是一直使用的是herder only 模式,简单是简单,但是编译的速度实在是太慢了,所以最近就在探索使用动态库的方法加速编译的速度。
仓库的地址 :
https://gitee.com/jeasonb/spdlog_dyn
使用方法
1. 动态库的编译方法
root@jeason:~/spdlog/dynamic# cmake --version
cmake version 3.10.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
root@jeason:~/spdlog/dynamic# mkdir build
root@jeason:~/spdlog/dynamic# cd build/
##### 下面使用的是 动态库的方法
root@jeason:~/spdlog/dynamic/build# cmake -DDYN=1 ..
in dyn mode
-- Configuring done
-- Generating done
-- Build files have been written to: /root/spdlog/dynamic/build
root@jeason:~/spdlog/dynamic/build# make -j4
Scanning dependencies of target spdlog
[ 10%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/file_sinks.cpp.o
[ 20%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/async.cpp.o
[ 30%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/cfg.cpp.o
[ 40%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/color_sinks.cpp.o
[ 50%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/fmt.cpp.o
[ 60%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/spdlog.cpp.o
[ 70%] Building CXX object CMakeFiles/spdlog.dir/spdlog/src/stdout_sinks.cpp.o
[ 80%] Linking CXX shared library libspdlog.so
[ 80%] Built target spdlog
Scanning dependencies of target app
[ 90%] Building CXX object CMakeFiles/app.dir/main.cpp.o
[100%] Linking CXX executable app
[100%] Built target app
root@jeason:~/spdlog/dynamic/build# touch ../main.cpp ## 这里 touch 以下 重新编译
root@jeason:~/spdlog/dynamic/build# make
[ 80%] Built target spdlog
Scanning dependencies of target app
[ 90%] Building CXX object CMakeFiles/app.dir/main.cpp.o
[100%] Linking CXX executable app
[100%] Built target app
root@jeason:~/spdlog/dynamic/build#
读者可以自行体会编译时的速度,可以发现 除了第一次编译的比较慢之外,后续对main 修改完之后再编译都会变得很快。
2. 使用头文件进行编译
root@jeason:~/spdlog/dynamic/build# cmake -DDYN=0 ..
in header mode
-- Configuring done
-- Generating done
-- Build files have been written to: /root/spdlog/dynamic/build
root@jeason:~/spdlog/dynamic/build# make -j4
Scanning dependencies of target app
[ 50%] Building CXX object CMakeFiles/app.dir/main.cpp.o
[100%] Linking CXX executable app
[100%] Built target app
root@jeason:~/spdlog/dynamic/build# ./app
[2022-02-20 16:59:39.544] [info] 12323123
[2022-02-20 16:59:39.544] [info] 12323123
[2022-02-20 16:59:39.544] [info] 12323123
root@jeason:~/spdlog/dynamic/build# touch ../main.cpp
root@jeason:~/spdlog/dynamic/build# make
Scanning dependencies of target app
[ 50%] Building CXX object CMakeFiles/app.dir/main.cpp.o
[100%] Linking CXX executable app
[100%] Built target app
root@jeason:~/spdlog/dynamic/build#
在只使用头文件的模式下,编译器本质上是将所有的头文件进行展开 然后重新编译的,所以 即使是只编译一个很小的文件,编译的也是非常慢。
简单说就是 稍微改一下main.cpp 都需要编译很久!
具体的编译效果建议读者自行下载代码体会!
标签:--,app,CXX,spdlog,linux,cpp,root,build 来源: https://blog.csdn.net/weixin_41534481/article/details/123032819
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。