C++;相对于父级包含路径的makefile
我有一个正在工作的项目,我需要在不改变代码的情况下从中提取部分,然后为它编写新的main()。 我的目录结构: [main_dir]/[main.cpp] [main_dir]/[dir1]/[child1]/file1.h [main_dir]/[dir2]/[child2]/file2.h 在main.cpp中我有:包括“dir1/child1/file1.h” 在file1.h中我有:包括“dir2/child2/file2.h” 我正在编译: g++main.cpp 我得到的“dir2/child2/file2.h”没有这样的文件或目录。 我无法将文件1更改为包含“../../dir2/child2/file2.h” 不知何故,在原始项目中,makefile中的某个部分搜索相对于[main_dir]的所有include路径,这样就可以找到file1.h中的includeC++;相对于父级包含路径的makefile,makefile,g++,Makefile,G++,我有一个正在工作的项目,我需要在不改变代码的情况下从中提取部分,然后为它编写新的main()。 我的目录结构: [main_dir]/[main.cpp] [main_dir]/[dir1]/[child1]/file1.h [main_dir]/[dir2]/[child2]/file2.h 在main.cpp中我有:包括“dir1/child1/file1.h” 在file1.h中我有:包括“dir2/child2/file2.h” 我正在编译: g++main.cpp 我得到的“dir2/
我应该向makefile中添加什么才能完成它呢?您需要在
makefile
中管理CPPFLAGS
CPPFLAGS="-I[main_dir]"
并用收据编写申请,如下所示:
g++ $(CPPFLAGS) main.cpp -o main
此外,建议阅读make样式指南,以编写一个好的
Makefile
。您可以参考以下关于包含文件夹声明的提示。您需要在Makefile
中管理CPPFLAGS
CPPFLAGS="-I[main_dir]"
并用收据编写申请,如下所示:
g++ $(CPPFLAGS) main.cpp -o main
此外,建议阅读make样式指南,以编写一个好的
Makefile
。当使用双引号包含头文件时,您可以遇到以下有关包含文件夹声明的提示。,如中所示
#include "dir2/child2/file2.h"
然后编译器将使用当前文件的目录来搜索头文件
如果您的文件1.h
中有它,那么编译器将查找头文件[main\u dir]/dir1/child1/dir2/child2/file2.h
。这是不对的
您可以通过告诉编译器将[main\u dir]
添加到标准include搜索路径列表中来解决此问题。这是通过-I
(大写字母I)选项完成的:
然后,当编译器在第一次搜索中未能找到
dir2/child2/file2.h
时,它将继续使用标准include搜索路径列表,并且应该找到它。当使用双引号包含头文件时,如中所示
#include "dir2/child2/file2.h"
然后编译器将使用当前文件的目录来搜索头文件
如果您的文件1.h
中有它,那么编译器将查找头文件[main\u dir]/dir1/child1/dir2/child2/file2.h
。这是不对的
您可以通过告诉编译器将[main\u dir]
添加到标准include搜索路径列表中来解决此问题。这是通过-I
(大写字母I)选项完成的:
然后,当编译器在第一次搜索中未能找到
dir2/child2/file2.h
时,它将继续使用标准include搜索路径列表,并且应该找到它。g++-o-l main.cpp
看起来不正确。首先,-o
选项需要在其后面直接输入输出文件的名称。其次,-l
选项是什么?是小写字母L,还是大写字母i?经过编辑,它们现在可能都不需要g++-o-L main.cpp
看起来不正确。首先,-o
选项需要在其后面直接输入输出文件的名称。其次,-l
选项是什么?是小写字母L还是大写字母i?经过编辑,这两个字母现在可能都不需要了