【问题标题】:How to include a folder of libraries in C?如何在 C 中包含库文件夹?
【发布时间】:2019-03-09 21:10:34
【问题描述】:

我正在尝试包含一个包含大约 60 个 .h 和 .hpp 文件组合的文件夹。此文件夹包含用于使用Wallaby(类似小型计算机的设备)为机器人比赛编程机器人的库。 includemain.c 位于同一位置(在code 内)。到目前为止,这是我包含库的标题:

#include "../code/include/accel.h"

就像accel.h 一样,我在include 中还有60 个其他.h 和.hpp 文件。那么,我的问题是,我需要输入所有 60 个标题行吗?或者有没有办法包含include 文件夹。

我在这个项目中使用 Clion,如果我不能包含文件夹本身,有没有人知道 Clion 中的快捷方式可以包含 include 中的所有文件。

我还考虑使用某种占位符作为文件夹名称并仅指定文件类型。因此,例如:#include "../code/include/(generic placeholder name).h"。我不知道这样的事情是否存在。

我还请您记住,我是编程初学者,所以请保持您的回答简单。

这只是一些额外的信息:
Wallaby 是一台迷你计算机,您可以将传感器、电机、伺服系统和摄像头连接到它,以便控制机器人参加 Botball 比赛。通常,可以通过 Wifi Direct 或电缆连接到 Wallaby,并通过在线界面直接在其上编写程序(不完全确定这个词,但您只需在浏览器中输入 IP 地址,它就会弹出一个可以制作项目和代码的界面)。在该界面中编写的所有代码都直接保存到 Wallaby 中。这里默认的包含语句是#include <kipr/botball.h>,所以我假设botball.h(位于Wallaby 的存储中)已经整合了所有这60 个库。我从GitHub 获得了我正在使用的包含文件夹。此链接是由 Botball 组织者之一提供给我的。因此,我尝试下载库的主要目的是,即使我没有连接到 Wallaby,我也可以编写并成功编译代码。希望这提供了一些相关的背景。

感谢您的回答!

【问题讨论】:

  • 你想达到什么目的?少打字?更快的东西?更小的东西?更多的可维护性?更具可读性?
  • 您想要一个简单的答案(并且有一个),但是您编写了一个非常复杂(或至少很长)的问题,其中包含大量不相关的信息。您的问题可以概括为“如何在 CLion 中向我的项目添加和包含文件夹?” - 仅此而已;这是一个通用问题,与特定库无关。
  • 我想知道是否真的有一个代码文件需要所有 60 个标头。或者反过来说,任何东西都可以设计成有 60 个标头,而所有这些标头都是显而易见的用例所需要的吗?
  • 嗯。两个读者,两种阅读问题的方式。是“如何包含大量标题?” (我的阅读)或者是“我怎样才能摆脱我的包含指令中的'../code/include'部分?” (我认为是另一个;@Clifford 随时纠正我)
  • 请注意,头文件不是库文件。我想你也必须链接相关的库。

标签: c include libraries clion robotics


【解决方案1】:

我会做的是

创建(可能使用脚本工具或特定程序)一个包含所有其他头文件的“all.h”文件

#ifndef ALL_INCLUDED
#define ALL_INCLUDED
#include "accel.h"
#include "bccel.h"
//...
#include "zccel.h"
#endif

在主文件中包含“all.h”

#include "../code/include/all.h"

您可以在每次构建代码时自动创建“all.h”。

【讨论】:

    【解决方案2】:

    CLion 是 Clang 和 GCC 的 IDE。这些编译器被指示通过指定-I<path> 命令行参数来搜索包含文件的路径。可以指定任何数字,并按照给定的顺序搜索它们,找到的第一个匹配项就是被包含的文件。

    我对 CLion 并不特别熟悉,但毫无疑问它有一个对话框,您可以在其中设置头文件搜索路径。


    编辑:似乎 CLion 可能不会让这一切变得如此简单。我知道您必须通过 CMake 添加:https://cmake.org/cmake/help/v3.0/command/include_directories.html#command:include_directories,但之后,IDE 将无法识别编辑器中的标题,并会警告您无法识别的文件,并且不会提供代码理解功能。我相信它仍然会建立。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 2011-09-14
      • 2019-07-08
      • 2021-03-04
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多