首页 > 解决方案 > 具有到父级的相对包含路径的 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 main.cpp

我得到“dir2/child2/file2.h”没有这样的文件或目录。我不能改变 file1 做:包括“../../dir2/child2/file2.h”

不知何故,在原始项目中,在 makefile 中搜索所有相对于 [main_dir] 的包含路径,因此可以找到来自 file1.h 的包含。

我应该在makefile中添加什么才能做到这一点?

标签: makefileg++

解决方案


您需要CPPFLAGS在您的Makefile.

CPPFLAGS="-I[main_dir]"

并用这样的收据编译应用程序:

g++ $(CPPFLAGS) main.cpp -o main

此外,建议阅读 make style guides 以编写一个好的Makefile。您可以在那里遇到包含文件夹声明的提示。


推荐阅读