首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改系统头路径和自定义头文件

更改系统头路径和自定义头文件
EN

Stack Overflow用户
提问于 2010-10-18 12:45:06
回答 2查看 710关注 0票数 0
代码语言:javascript
复制
gcc 4.4.5 c89

我最近在我的开发机器上下载并安装了log4c。我把所有的头文件和包含文件放在下面的目录中。

代码语言:javascript
复制
project_name/tools/log4c/inc
project_name/tools/log4c/libs

但是,由于我在系统路径中安装了头文件:

代码语言:javascript
复制
/usr/include/log4c/*.h

所以在我的项目中,当我包含layout.h的时候。layout.h将在此系统路径中包含以下标头。

代码语言:javascript
复制
#include <log4c/logging_event.h>

我在目标机器上创建了与我为tools/inctools/lib开发所做的相同的目录结构。

但是,它不能编译,因为我没有在目标机器上安装log4c,所以log4c的系统路径不存在。但是,目标计算机的用户不需要安装log4c。一切都应该开箱即用。

所以我认为最好的办法是编辑所有的头文件。从这个开始:

代码语言:javascript
复制
#include <log4c/logging_event.h>

代码语言:javascript
复制
#include "logging_event.h"

所有的头文件都在inc目录中,所以我不会使用系统路径。

我的问题是,这是一个好主意,把所有的头文件放在一个单一的目录,并编辑它们指向这个单一的公司目录?

非常感谢你的建议,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-18 13:31:03

我不考虑标头--更改它们可能容易出错且耗时,特别是如果您想在某个时候更新您的log4c版本。

您的project_name/tools/log4c/inc目录中也有/usr/include/log4c中的相同标头,我理解对了吗?如果是这样的话,将它们移到project_name/tools/log4c/inc/log4c,并使用-I标志将包含路径添加到gcc命令行:

代码语言:javascript
复制
gcc -I project_name/tools/log4c/inc myprog.c etc etc

我们正在将文件移动到log4c/inc/log4c,以便<log4c/logging_event.h>仍然可以在log4c/inc/下的log4c目录上匹配。

编辑:我最初输入-L作为标志,它设置库搜索路径,而不是包括文件搜索路径。对于这种情况,-I是正确的标志。

票数 1
EN

Stack Overflow用户

发布于 2010-10-25 14:57:27

看起来像是log4c库附带了一个目录结构

代码语言:javascript
复制
/src
  /log4c.h
  /log4c
     /lots of *.h and *.c

因此,它被设计为将其标头包含为

代码语言:javascript
复制
 #include <log4c.h>

代码语言:javascript
复制
 #include <log4c/logging_event.h>

就像你做的那样。用这种方式做事情很重要;相反,如果你只是写

代码语言:javascript
复制
 #include <logging_event.h>

如果您将库分发给具有不同logging_event.h的人,这些文件可能会被混淆,而您的可怜用户最终会包含错误的文件。

因此,我建议坚持使用log4c使用的目录结构。在您的案例中:

代码语言:javascript
复制
project_name/tools/log4c/inc/log4c/logging_event.h

等等(正如@Jander建议的那样)。使用gcc添加包含目录的正确方法是-I

代码语言:javascript
复制
gcc -Iproject_name/tools/log4c/inc foo.c
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3956650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档