Linux下CMake链接googletest【CMake编写】

1|0源码下载

git clone https://github.com/google/benchmark.git git clone https://github.com/google/googletest.git benchmark/googletest

这两个源代码分别编译 并执行

sudo make install

1|0

头文件被安装在

/usr/local/include

库文件被安装在

/usr/local/lib

2|0CMake文件链接文件简介

1|0通过find_package查找

添加代码如下:

find_package(Ceres REQUIRED) include_directories(${Ceres_INCLUDE_DIRS}) target_link_libraries(Test ${Ceres_LIBRARIES})

以Ceres库为例,find_package通过findceres.cmake文件查找ceres的头文件位置和.a文件(库文件)位置,在find.cmake文件中包含了Ceres_INCLUDE_DIRS和Ceres_LIBRARIES的位置。

以本例为例

include_directories("/home/usrname/benchmark/googletest/googletest/include/gtest") link_directories("/usr/local/lib") target_link_libraries(run libbenchmark.a)
include_directories指定了googletest的头文件的搜索路径 link_directories指定了googletest的.a文件的搜索路径 target_link_libraries将.a文件和可执行文件名链接

查找.a文件的位置:

/usr/lib或/usr/local/lib中 使用whereis命令查找指定的.a文件

也可以尝试用whereis搜索.cmake文件的路径,我想不起来在哪个路径了。

1|0总结

使用find_package命令查找不到文件时是因为没有对应的findXXX.cmake文件。这时候需要使用link_directories命令直接设置库文件和头文件的地址。

3|0添加pthread链接

我们需要的是pthread的库,不需要lpthread的库(lpthread会有一些问题,导致编译不过)
在cmake中添加pthread而不是lpthread:

set_target_properties(${TARGET} PROPERTIES COMPILE_FLAGS "-pthread" LINK_FLAGS "-pthread")

4|0成果展示:

2022-01-25T14:36:29+08:00 Running ./run Run on (16 X 4800 MHz CPU s) CPU Caches: L1 Data 32 KiB (x8) L1 Instruction 32 KiB (x8) L2 Unified 256 KiB (x8) L3 Unified 16384 KiB (x1) Load Average: 0.61, 0.59, 0.54 ***WARNING*** CPU scaling is enabled, the benchmark real time measurements may be noisy and will incur extra overhead. ***WARNING*** Library was built as DEBUG. Timings may be affected. --------------------------------------------------------------- Benchmark Time CPU Iterations --------------------------------------------------------------- bench_array_operator 161 ns 160 ns 4085540 bench_array_at 160 ns 159 ns 4395393 bench_array_get 160 ns 160 ns 4384017

googletest原理详解链接。
使用的也是上面的例子。
CMake链接第三方库三种方法
CMake文件链接pthread更好的方法


__EOF__

本文作者铃灵狗的水墨书香
本文链接https://www.cnblogs.com/linglingdog/p/15874410.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   铃灵狗  阅读(542)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示