Makefile - 如何保存.o目录?

时间:2010-04-10 22:03:55

标签: makefile

想象一下以下文件夹结构:

  • 项目
    • SRC
      • code.c
      • 生成文件
    • bin

如何将code.c编译为code.o并直接将其放入bin中?我知道我可以将它编译到src下的code.o和do“mv code.o ../bin”但如果出现编译错误会产生错误,对吧?即使它以这种方式工作,有没有更好的方法呢?

感谢。

4 个答案:

答案 0 :(得分:5)

根据您的意思,该过程应该或不应该“产生错误”。如果有编译错误,你就会知道。

也就是说,make有几种方法可以做到。在这种情况下最好的可能是:

  • 您可以将Makefile放入bin中。擅长使用文件那里来创建文件这里,但不是相反。
  • 您可以在makefile目标中指定目标路径:
    $(MAIN_DIR)/bin/%.o: %.c
        $(COMPILE)...
    

答案 1 :(得分:2)

有点晚了,但如果有帮助的话。 这就是我从makefile所在位置获取一级目录路径的方法。

$(subst $(notdir $(CURDIR)),,$(CURDIR))

如果你的项目是这样的:

~/myProject/
    src/
        Makefile
        #all the .c and .cpp
    bin/
        #where you want to put the binaries.

$(CURDIR)将输出〜/ myProject / src

$(subst $(notdir $(CURDIR)),, $(CURDIR))将输出〜/ myProject

答案 2 :(得分:0)

您可以尝试移动,但只有在使用&&编译成功时才会:

code.o: code.c code.h
    g++ -c code.c && mv code.o ../

mv code.o ../仅在g++返回0时执行,即编译成功时。如果你有一个非常复杂的makefile,这可能不适合你,但我想我会分享我所知道的。

答案 3 :(得分:0)

您仍然可以使用移动方法并避免编译错误:

cc -c code.c && mv code.o ../bin

如果“cc”部分失败,则不会运行“mv”部分。