我正在学习使用make。我试图在我的家用机器上使用g ++编译一个程序,我已经在学校机器上使用xl成功编译了。我正在尝试链接我构建的外部库并放在一个单独的目录中。我试图包含头文件,但g ++声称include目录不存在。 include目录肯定存在,tab完成填充,find
也可以找到它。
为什么g ++决定目录不存在?一般来说是什么导致目录被忽略?我想知道为什么这会破坏所以我可以更好地编写makefile。更重要的是,我如何解决这个问题,并在我告诉它查看的任何目录中搜索任意头文件?
我已经看到有关g ++忽略目录的问题,但这些是忽略各种系统默认位置的情况。他们通常通过删除冲突的版本或只是重新安装他们的工具来解决他们的问题。我的问题不同,因为g ++忽略了实际存在的用户定义目录。
src/a3.cc:1:17: fatal error: apf.h: No such file or directory
#include "apf.h"
$ find /home/USER/Documents/GitHub/core/apf/
/home/USER/Documents/GitHub/core/apf/
/home/USER/Documents/GitHub/core/apf/apfUserData.cc
....
/home/USER/Documents/GitHub/core/apf/apf.h
....
我尝试使用-I
apf = /home/USER/Documents/Github/core/apf/
CFLAGS = $(CFLAGS) -Wall -g -I $(apf) --pedantic-errors --verbose
我也尝试过设置CPLUS_INCLUDE_PATH
export CPLUS_INCLUDE_PATH = $(apf)
对于这些尝试中的每一次,我都会看到相同的错误,即g ++是"忽略不存在的目录"
COLLECT_GCC=/usr/bin/g++
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/home/USER/Documents/Github/core/apf/"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../x86_64-redhat-linux/include"
ignoring duplicate directory "/usr/local/include"
as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
./inc
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/x86_64-redhat-linux
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../include/c++/4.9.2/backward
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include
/usr/local/include
/usr/include
End of search list.
GNU C++ (GCC) version 4.9.2 20150212 (Red Hat 4.9.2-6) (x86_64-redhat-linux)
compiled by GNU C version 4.9.2 20150212 (Red Hat 4.9.2-6), GMP version 6.0.0, MPFR version 3.1.2, MPC version 1.0.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 954ba53e83b294b646fa1b6b73a69682
答案 0 :(得分:0)
您似乎拥有区分大小写的文件系统。您在某些地方GitHub
和其他地方Github
。让它们完全匹配,你的状态会更好。