0

我有以下生成文件:

CC = g++
CFLAGS=-c -Wall


all: myProgram

myProgram: obj/main.o obj/Class1.o obj/Class2.o 
    $(CC) -o bin/myProgram obj/main.o obj/Class1.o obj/Class2.o 

obj/main.o: main.cpp  
    $(CC) $(CFLAGS) main.cpp -o obj/main.o

obj/Class1.o: src/Class1.cpp
    $(CC) $(CFLAGS) src/Class1.cpp -o obj/Class1.o

obj/Class2.o: src/Class2.cpp
    $(CC) $(CFLAGS) src/Class2.cpp -o obj/Class2.o

这个想法是我有这样的文件/目录结构:

/project
    Makefile
    main.cpp
    /src
        Class1.cpp
        Class2.cpp
    /obj
        Class1.obj
        Class2.obj
    /bin
        myProgram
    /inc
        Class1.h
        Class2.h

makefiles 获取这些目录中的源文件和目标文件,并在 /bin 中将它们输出为myProgram.

我知道我的 makefile 可能看起来不太理想,但无论如何。我想学习如何创建 makefile,那么您建议我将什么添加到我的 makefile 中,或者作为下一步进一步了解 makefile 以提高我的知识?(我可能正在做一个需要了解makefile的项目,所以我正在努力学习它们)

4

2 回答 2

1

这是我创建的通用 Makefile C,它可以很容易地适应C++

Linux 的通用 Makefile

这是一个关于如何编写 makefile的很棒的教程。

于 2013-06-26T06:48:33.450 回答
0

这是一个相当笼统的问题..但让我看看我是否可以用小方法回答它

  • 目标称为清洁 - 必要
  • 递归生成文件可能对学习有用
  • 您应该使用包含 cpp 文件和 obj 文件列表的变量,并尽量避免将它们输入。

试试genmake.pl,它提供了一个不错的默认结构。

于 2013-06-26T06:43:03.160 回答