Makefile 的异常行为

Makefile 的异常行为

我已经为包含语句的简单 cpp 程序编写了一个 make 文件cout

#This a makefile for compiling the hello world cpp program.
   CC=clang++
   all: run test.o 
   run: .cpp=.o
  .PHONY: clean
   clean:
        rm -rf *.o run

但这并没有编译我的 test.cpp。我从教程中学到这个想法,make 如果未指定任何内容,它将足够智能地编译依赖项和目标。

出了什么问题?

谢谢。

答案1

在您的情况下不需要 makefile,因为它make具有知道如何编译简单程序的内置规则。

简单的方法

  1. 创建一个名为test.cpp的hello world测试程序。

    #include <iostream>
    using namespace std;
    
    int main() 
    {
        cout << "Hello, World! << endl;
        return 0;
    }
    
  2. 将目录更改为cd包含 test.cpp 的目录并运行make

    make CC=g++ test  
    

    为了运行上述命令makeg++必须安装。

  3. 运行测试可执行文件。

    ./test  
    
  4. 结果./test

    Hello, World! 
    

艰辛的道路

  1. 创建一个名为test.cpp的hello world测试程序,与简单的方法相同。

  2. 将目录更改为cd包含 test.cpp 的目录并创建一个名为 makefile1 的 makefile。

    CC      = clang++
    CFLAGS  = -g
    RM      = rm -f
    
    default: all
    all: Hello
    Hello: test.cpp
        $(CC) $(CFLAGS) -o Hello test.cpp
    clean veryclean:
        $(RM) Hello  
    

    clang++缩进的两行必须以制表符开头,而不是 4 个空格。如果用替换 ,上述 makefile 也将正确运行g++

  3. 跑步make

    make -f makefile1  
    

    为了运行上述命令make clangg++必须安装。

  4. 运行 Hello 可执行文件。

    ./Hello  
    
  5. 结果./Hello

    Hello, World! 
    

相关内容