Makefile comportamento incomum

0

Eu escrevi um arquivo make para um programa cpp simples contendo cout declarações.

#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

mas isso não está compilando meu test.cpp. De um tutorial, tomei essa idéia de que make é inteligente o suficiente para compilar dependência e destino se nada for especificado.

O que está errado?

Obrigado.

    
por Amarjeet Sharma 06.08.2017 / 08:01

1 resposta

0

No seu caso, não há necessidade de um makefile, já que make tem regras internas que sabem como compilar um programa simples.

caminho fácil

  1. Crie um programa de teste mundial hello chamado test.cpp.

    #include <iostream>
    using namespace std;
    
    int main() 
    {
        cout << "Hello, World! << endl;
        return 0;
    }
    
  2. Altere os diretórios com cd para o diretório que contém o arquivo test.cpp e execute make .

    make CC=g++ test  
    

    Para executar o comando acima, make e g++ devem ser instalados.

  3. Execute o executável de teste.

    ./test  
    
  4. Resultados de ./test :

    Hello, World! 
    

Difícil

  1. Crie um programa de teste hello world chamado test.cpp, da mesma maneira que na maneira fácil.

  2. Altere os diretórios com cd para o diretório que contém o test.cpp e crie um makefile chamado makefile1.

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

    As duas linhas recuadas devem começar com guias, não com 4 espaços. O makefile acima também será executado corretamente se você substituir clang++ por g++ .

  3. Executar make .

    make -f makefile1  
    

    Para executar o comando acima, make clang e g++ devem ser instalados.

  4. Execute o executável Hello.

    ./Hello  
    
  5. Resultados de ./Hello :

    Hello, World! 
    
por karel 06.08.2017 / 09:14