每次对象文件转储到其他目录时生成文件重建 我有一个Mag文件,每次编译时都会不断地重建C++源代码。我发现原因是我正在将对象文件转储到一个单独的目录中。 make文件中的一行是: $(CPP_COMPILER) $(COMPILE_FLAGS) $(RELEASE_OPT_FLAGS) -c Test.cpp $(INCLUDE_PATH) -o objfiles/$(OUTDIR)/Test.o
我是否可以设置一些规则,让make首先检查这个dir(objfiles),如果不需要,不要每次都重新构建源代码每次对象文件转储到其他目录时生成文件重建 我有一个Mag文件,每次编译时都会不断地重建C++源代码。我发现原因是我正在将对象文件转储到一个单独的目录中。 make文件中的一行是: $(CPP_COMPILER) $(COMPILE_FLAGS) $(RELEASE_OPT_FLAGS) -c Test.cpp $(INCLUDE_PATH) -o objfiles/$(OUTDIR)/Test.o,c++,linux,makefile,C++,Linux,Makefile,我是否可以设置一些规则,让make首先检查这个dir(objfiles),如果不需要,不要每次都重新构建源代码 谢谢您的帮助。您应该使规则本身引用正确的路径: objfiles/$(OUTDIR)/Test.o: Test.cpp $(CPP_COMPILER) $(COMPILE_FLAGS) $(RELEASE_OPT_FLAGS) -c Test.cpp $(INCLUDE_PATH) -o objfiles/$(OUTDIR)/Test.o 如果仍希望Test.o作为makefil
谢谢您的帮助。您应该使规则本身引用正确的路径:
objfiles/$(OUTDIR)/Test.o: Test.cpp
$(CPP_COMPILER) $(COMPILE_FLAGS) $(RELEASE_OPT_FLAGS) -c Test.cpp $(INCLUDE_PATH) -o objfiles/$(OUTDIR)/Test.o
如果仍希望Test.o
作为makefile目标,则可以轻松添加一个:
Test.o: objfiles/$(OUTDIR)/Test.o
谢谢你的评论。但在这之后,我陷入了另一个问题。所以$(OUTDIR)是一个变量,我创建如下-GCC_VERSION=
GCC--VERSION | cut-d”“-f3 | head-1
OUTDIR=GCC_$(GCC_VERSION)$(PLATFORM),现在我尝试在target中使用它。大声说出几个错误。@user888270:您试图同时解决多个问题;分而治之。在尝试在命令中使用该变量之前,请验证该变量是否具有您认为它具有的值,以及您打算使用的目录是否确实存在。如果Makefile
正确,您所请求的正是Make如何开箱即用。您没有向我们显示整个文件,因此我们无法为您排除故障;但是根据您的描述,您对此目标的依赖关系没有正确声明。