为文件夹中的文件制定推理规则
我使用 GNU make,我希望我的源文件和目标文件位于不同的文件夹中。
第一步,我希望源文件位于项目文件夹的根目录中,目标文件位于子文件夹中(例如 Debug/
)。
推理规则是:
.ss.obj:
echo Assembling $*.ss...
$(ASSEMBLY) $(2210_ASSEMBLY_FLAGS) $*.ss -o Debug\$*.obj
但在这种情况下,make 会一直重建所有文件,因为根文件夹中没有 .obj。
有没有办法在 .ss.obj
行中包含目标文件夹?
我也尝试过:
$(OBJS_WITH_PATH):$(SRC)
echo Assembling $<...
$(ASSEMBLY) $(ASSEMBLY_FLAGS) $< -o $@
使用 $(SRC)
作为我所有源的列表,$(OBJS_WITH_PATH)
以此方式构建:
OBJS_WITH_PATH = $(patsubst %.ss,Debug\\%.obj,$(SRC))
但这会建立对所有源文件的依赖关系对象文件。
我想要的是修改我首先编写的推理规则,以获取 Debug/*.obj 文件。它现在所说的是没有规则使目标成为Debug/asdfasdf.obj
。
I use GNU make, I want my source files and object files to be in different folders.
As a first step, I want the source files at the root of my project folder, and the object files in a subfolder (say Debug/
).
The inference rule would be:
.ss.obj:
echo Assembling $*.ss...
$(ASSEMBLY) $(2210_ASSEMBLY_FLAGS) $*.ss -o Debug\$*.obj
but in that case, make rebuilds all files all the time, since there are no .obj in the root folder.
Is there a way to include a folder for the target in the line .ss.obj
?
I also tried:
$(OBJS_WITH_PATH):$(SRC)
echo Assembling lt;...
$(ASSEMBLY) $(ASSEMBLY_FLAGS) lt; -o $@
with $(SRC)
as a list of all my sources, $(OBJS_WITH_PATH)
built that way:
OBJS_WITH_PATH = $(patsubst %.ss,Debug\\%.obj,$(SRC))
but that builds a dependency on all source files for all object files.
What I would like is to modify the inference rule I wrote first, to take Debug/*.obj
files. What it says now is no rule to make target Debug/asdfasdf.obj
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用模式规则:
Use pattern rules: