gcc 4.4.5 c89我最近在我的开发机器上下载并安装了log4c。我把所有的头文件和包含文件放在下面的目录中。
project_name/tools/log4c/inc
project_name/tools/log4c/libs但是,由于我在系统路径中安装了头文件:
/usr/include/log4c/*.h所以在我的项目中,当我包含layout.h的时候。layout.h将在此系统路径中包含以下标头。
#include <log4c/logging_event.h>我在目标机器上创建了与我为tools/inc和tools/lib开发所做的相同的目录结构。
但是,它不能编译,因为我没有在目标机器上安装log4c,所以log4c的系统路径不存在。但是,目标计算机的用户不需要安装log4c。一切都应该开箱即用。
所以我认为最好的办法是编辑所有的头文件。从这个开始:
#include <log4c/logging_event.h>至
#include "logging_event.h"所有的头文件都在inc目录中,所以我不会使用系统路径。
我的问题是,这是一个好主意,把所有的头文件放在一个单一的目录,并编辑它们指向这个单一的公司目录?
非常感谢你的建议,
发布于 2010-10-18 13:31:03
我不考虑标头--更改它们可能容易出错且耗时,特别是如果您想在某个时候更新您的log4c版本。
您的project_name/tools/log4c/inc目录中也有/usr/include/log4c中的相同标头,我理解对了吗?如果是这样的话,将它们移到project_name/tools/log4c/inc/log4c,并使用-I标志将包含路径添加到gcc命令行:
gcc -I project_name/tools/log4c/inc myprog.c etc etc我们正在将文件移动到log4c/inc/log4c,以便<log4c/logging_event.h>仍然可以在log4c/inc/下的log4c目录上匹配。
编辑:我最初输入-L作为标志,它设置库搜索路径,而不是包括文件搜索路径。对于这种情况,-I是正确的标志。
发布于 2010-10-25 14:57:27
看起来像是log4c库附带了一个目录结构
/src
/log4c.h
/log4c
/lots of *.h and *.c因此,它被设计为将其标头包含为
#include <log4c.h>或
#include <log4c/logging_event.h>就像你做的那样。用这种方式做事情很重要;相反,如果你只是写
#include <logging_event.h>如果您将库分发给具有不同logging_event.h的人,这些文件可能会被混淆,而您的可怜用户最终会包含错误的文件。
因此,我建议坚持使用log4c使用的目录结构。在您的案例中:
project_name/tools/log4c/inc/log4c/logging_event.h等等(正如@Jander建议的那样)。使用gcc添加包含目录的正确方法是-I
gcc -Iproject_name/tools/log4c/inc foo.chttps://stackoverflow.com/questions/3956650
复制相似问题