初学者GNU Makefile错误

时间:2011-01-29 11:58:25

标签: c++ makefile

这是我第一次尝试从previous post开始尝试使用Makefile。

无论如何这里是代码

SortLab.exe : SelectionSort.o Main.o  
        g++ -o $@ $^  
SelectionSort.o : SelectionSort.cpp SelectionSort.h  
Main.o : Main.cpp  

#-------------------------------------------------------------

run: SortLab.exe  
        ./SortLab.exe  

clean:  
    rm -f *.o  
    rm -f *.exe  

build: clean SortLab.exe  

%.o: %.cpp  
    g++ -c $<  

我打算SelectionSort.cpp&amp; SelectionSort.h形成一个目标文件,Main.cpp形成自己的目标文件。最后创建一个可执行文件。 Main.cpp取决于SelectionSort.cpp,哪里出错了?

我在哪里可以找到不同GNU命令的含义,-o -c等等

1 个答案:

答案 0 :(得分:2)

  1. 您不需要自己定义%.o: %.cpp规则,Make知道如何编译C ++。
  2. 缩进标签,而不是空格; Make对这种差异很敏感。
  3. 每个目标文件都应该依赖于它所依赖的源文件中包含的标头。您可能需要Main.o : Main.cpp SelectionSort.h
  4. build不应该依赖于clean,它会破坏Make的主要功能之一(当文件发生变化时有选择地重新编译)。
  5. 如果您使build成为第一个目标,则可以运行Make without a target来获得完整编译。按惯例调用主目标all