makefile - 具有到父级的相对包含路径的 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中添加什么才能做到这一点?
解决方案
您需要CPPFLAGS
在您的Makefile
.
CPPFLAGS="-I[main_dir]"
并用这样的收据编译应用程序:
g++ $(CPPFLAGS) main.cpp -o main
此外,建议阅读 make style guides 以编写一个好的Makefile
。您可以在那里遇到包含文件夹声明的提示。
推荐阅读
- c# - 用于跨整个解决方案的自定义 C# 重构的 Visual Studio 2017 扩展
- c++ - 有常量变量时如何在栈中实现push和pop函数(编译错误)
- spring - 通过 JHipster 进行 Spring 社交整合
- google-chrome-extension - 为什么用户允许可选权限授予但在 chrome.permissions.contains 函数中未检测到?
- sql-server - 多个模式的存储过程
- python - numpy array IndexError:当掩码反转或否定时“索引超出范围”
- actions-on-google - 使用测试模拟器时,Google Actions 中的 MediaObject 引发错误
- vba - 谁能解释如何将表情符号插入 VBA Excel?
- python - 如何定义卡尔曼滤波器的状态转移矩阵?
- java - 如何找到列表的所有路径?