c++ - 如何创建跨多个目录查找文件并将目标文件放入不同目录的 Makefile?
问题描述
我是 Makefiles 的初学者,我想做的事情非常复杂,如果有人可以帮助我,那么请考虑向我解释一下事情是如何工作的,这样我就可以学习和理解。当然,我进行了研究,但找不到有用的东西。所以我们有以下项目:
src
| File1.cpp
| File2.cpp
| File3.cpp
src2
| File4.cpp
| File5.cpp
| File6.cpp
obj
Makefile
所以我想要一个Makefile,它可以让我选择尽可能多的目录来搜索源代码文件(在这种情况下src1
,src2
然后将生成的目标文件放入一个目录中(在这种情况下obj
)。所以是的或者类似的东西或者你能做的任何事情......哈哈,明白了吗make
?
解决方案
您可以使用以下语法将变量传递给您的 makefile:
$ make SOMEVAR=SOMEVALUE
这可用于传递您要构建的文件夹:
$ make SRC=src1 # or src, src2, ...
makefile 可以是这样的(你只提到了 obj 文件,所以我只添加了那个):
SRC_FILES=$(wildcard $(SRC)/*.cpp)
OBJ_FILES=$(patsubst $(SRC)/%.cpp,obj/%.o, $(SRC_FILES))
all:$(OBJ_FILES)
@echo "done!"
obj/%.o:$(SRC)/%.cpp
@echo "building $@"
@$(CXX) -o $@ -c $< $(CFLAGS)
推荐阅读
- firebase - 更改 Firebase 面向公众的名称
- ios - Core Data+CloudKit 未连接到 CloudKit
- ios - 错误 HE0046。Rider 无法安装 iOS 应用程序
- angular - 如何根据 quizId 路由到特定测验?
- php - 无法在 php 中正确使用 sql 查询的结果
- firebase - 我在哪里使用颤振获得 SHA-1 证书指纹?(使用颤振创建--androidx ProjectName)
- python - pyautogui:悬停事件未在 Windows 上触发
- python-3.x - 如何解决“我们找不到运行的 python”?
- c# - 使用 Assembly.Load 创建外部项目的新 WinForm
- mysql - MySQL IF 不同的问题 - 为什么我的记录不是唯一的?