header-only相关内容

CMake:当我尝试添加源目录本身或其子目录之一时,target_include_directories() 会打印错误

我正在编写一个 C++ 库(仅限头文件)并且正在使用 CMake 生成我的(Visual Studio)项目和解决方案文件.我也在编写一个测试套件,它是同一个 CMake 项目的一部分. 当我在代表我的仅标头库的目标上调用 target_include_directories() 时,我的问题出现了,这样我的库的使用者就可以找到它的头文件.我收到以下错误消息(即使没有中止生成). CMak ..
发布时间:2021-12-26 21:55:21 C/C++开发

我什么时候应该考虑使库仅标头?

显然模板库只需要是标头,但是对于非模板,什么时候应该使它们只标头呢? 解决方案 如果您认为非模板库可能仅是标头,请考虑将其分为两个文件,然后提供第三个文件,该文件同时包含和.cpp(带有包含保护). 然后,在许多不同的TU中使用您的库的任何人,如果怀疑这可能会花费大量的编译时间,就可以轻松进行更改以对其进行测试. 一旦您知道用户可以选择哪种方式使用该库,答案就可能变成“尽可能提 ..
发布时间:2020-07-23 05:00:18 C/C++开发

在CLion中,仅标头库:文件“不属于任何项目目标,代码洞察功能可能无法正常工作".

我使用cmake命令设置了仅标头的库项目: add_library(my_library INTERFACE) 我还添加了 target_sources(my_library INTERFACE ${MY_LIRBARY_HEADER_FILES}) 但是当我打开源文件时,得到警告: 此文件不属于任何项目目标,代码洞察功能可能无法正常工作 我在代码完成之类的事情上失 ..
发布时间:2020-07-23 04:59:16 C/C++开发

如何创建仅标头的库?

我想将正在使用的库打包为仅标头的库,以使客户端更易于使用. (它很小,实际上没有理由将其放在单独的翻译单元中).但是,我不能简单地将代码放在标头中,因为这违反了C ++的一个定义规则. (假设库头包含在一个客户项目的多个翻译单元中) 一个人如何修改一个库以使其仅标头? 解决方案 您可以使用inline关键字: // header.hpp (included into multi ..
发布时间:2020-07-23 04:59:12 C/C++开发

CLion不解析来自外部库的标头

您好! 前一段时间,我使用XCode在C ++ 1x中创建了一个大头文件库。库的当前布局是()( ls -R sponf )的部分输出 sponf / sponf: ancestors sponf.h sponf_utilities.h 类别sponf_children.h实用程序 children sponf_macros.h sponf / sponf / ance ..
发布时间:2016-10-27 01:58:40 C/C++开发

CMake:target_include_directories()打印一个错误,当我尝试添加源目录本身或其中一个子目录

我正在写一个C ++库(仅头),并使用CMake生成我的(Visual Studio)项目和解决方案文件。我也编写了一个测试套件,它是同一个CMake项目的一部分。 我的问题发生在当我调用target_include_directories()只有库,所以我的库的消费者可能会找到它的头文件。我收到以下错误消息(即使生成未中止)。 CMakeLists.txt中的CMake错误: 目标 ..
发布时间:2016-10-23 13:07:21 C/C++开发

关于仅使用头的c ++库的使用的可量化度量(基准)

我试图找到一个答案,使用SO。有许多问题列出了在c ++中构建一个只有头文件的库的各种优缺点,但是我还没有找到一个可量化的方法。 因此,在可量化的术语中,使用传统上分离的c ++头文件和实现文件与头文件有什么区别? ,我假设模板没有使用(因为它们只需要头)。 要详细说明,我列出了我从文章中看到的是利弊。显然,一些不容易量化(例如易于使用),因此对于可量化的比较是无用的。 只 ..
发布时间:2016-10-22 17:09:25 C/C++开发

标题库的优点

标头唯一库的好处是什么,为什么要这样写呢? 解决方案 有些情况下只有标题库是唯一的选项,例如在处理模板时。 只有标题库也意味着你不必担心可能使用库的不同平台。当你分离实现时,通常这样做是为了隐藏实现细节,并将库作为头和库的组合来分发( lib , dll '或 .so 文件)。这些当然必须为您提供支持的所有不同的操作系统/版本编译。 您还可以分发实现文件,但这将意味着一个额外的 ..
发布时间:2016-10-13 12:09:09 C/C++开发