c中包含static函数的lib怎么进行gtest单元测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c中包含static函数的lib怎么进行gtest单元测试相关的知识,希望对你有一定的参考价值。
参考技术A 界面显得清晰,将各种查询条件放到FieldSet中,并可以设置FieldSet的标题和是否可以折叠。 布局方式有很多,像这种需要将很多信息放在一排的情况,可以使用column方式的layout,但是如果信息多,那要写太多的列,而且控制起来很不方便。如何在 gn 中包含共享库
【中文标题】如何在 gn 中包含共享库【英文标题】:How to include a shared library in gn 【发布时间】:2021-05-07 10:13:06 【问题描述】:我有一个 BUILD.gn,我想在其中包含一个位于 usr/lib
的共享库。
我已经参考了这个话题How to include a shared library in chromium's gn file?
但是 .so 文件没有与主函数链接。下面是BUILD.gn代码:-
executable("check")
sources = [ "check.cpp" ]
deps = [
":SampleCheck",
]
lib_dirs = [ "//usr/lib/SampleFile.so" ]
libs = [ "SampleFile" ]
shared_library("SampleCheck")
sources = [
"SampleCheck.h", // Header file for functions
]
但是,执行此操作时出现错误:-
ninja: Entering directory `out'
[0/1] Regenerating ninja files
[1/1] LINK main
FAILED: main
g++ -Wl,-rpath=\$ORIGIN/ -Wl,-rpath-link= -L../usr/lib/SampleFile.so -o main -Wl,--start-group @main.rsp -Wl,--end-group -lSampleDll.so
/usr/bin/ld: cannot find -lSampleDll.so
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
我调查了许多网站,但我不知道我哪里错了?
【问题讨论】:
【参考方案1】:这条线看起来很可疑:
lib_dirs = [ "//usr/lib/sampleFile.so" ]
GN 使用//
来表示GN 项目的根,以.gn
文件的存在为标志。 lib_dirs
知道绝对文件系统允许像你这样的结构;您可以只使用一个正斜杠来指示根文件系统。
另外,lib_dirs
的目的是将 directories 添加到链接器的搜索路径:https://gn.googlesource.com/gn/+/master/docs/reference.md#var_lib_dirs
你给它的是一个文件,而不是一个目录。
请尝试:
lib_dirs = [ "/usr/lib" ]
这应该将您的链接行更改为
g++ -Wl,-rpath=\$ORIGIN/ -Wl,-rpath-link= -L/usr/lib -o main -Wl,--start-group @main.rsp -Wl,--end-group -lSampleDll.so
这可能更接近您的预期;链接器看到所需的SampleDll.so
并将搜索/usr/lib
。
【讨论】:
以上是关于c中包含static函数的lib怎么进行gtest单元测试的主要内容,如果未能解决你的问题,请参考以下文章
从 Stroustrup 的书中包含 std_lib 时,不理解 VS 中 HelloWorld 上的错误 [重复]