Acabei de herdar um código C ++ que foi mal escrito com um arquivo cpp que continha as principais e várias outras funções. Também existem .h
arquivos que contêm classes e suas definições de função.
Até agora, o programa foi compilado usando o comando g++ main.cpp
. Agora que separei as classes .h
e os .cpp
arquivos, preciso usar um makefile ou ainda posso usar o g++ main.cpp
comando?
c++
compilation
header
makefile
Meir
fonte
fonte
g++ *.cpp -o output
Para compilar separadamente sem vincular, você precisa adicionar a
-c
opção:fonte
g++ -o my_executable myclass.o main.o
Compilar vários arquivos de uma só vez é uma péssima escolha se você for colocar isso no Makefile.
Normalmente em um Makefile (para GNU / Make ), basta escrever que:
Dessa forma,
make
seria recompilar adequadamente apenas o que precisa ser recompilado. Também é possível adicionar alguns ajustes para gerar as dependências do arquivo de cabeçalho - para que o make também reconstrua adequadamente o que precisa ser reconstruído devido às alterações no arquivo de cabeçalho.fonte
Você ainda pode usar o g ++ diretamente se desejar:
onde f1.cpp e f2.cpp são os arquivos com as funções neles. Para detalhes de como usar o make para fazer a compilação, consulte a excelente documentação do make do GNU .
fonte
Eu sei que essa pergunta foi feita anos atrás, mas ainda queria compartilhar como eu geralmente compilo vários arquivos c ++.
g++ -c *.cpp -o myprogram
."myprogram"
./myprogram
Isso é tudo!!
O motivo pelo qual estou usando * é que, se você tiver 30 arquivos cpp, digitaria todos eles? ou apenas use o sinal * e economize tempo :)
ps Use esse método apenas se você não se importa com makefile.
fonte
.h
arquivos não têm nada a ver com compilação ... você só se preocupa com arquivos cpp ... então digiteg++ filename1.cpp filename2.cpp main.cpp -o myprogram
significa que você está compilando cada arquivo cpp e os vinculando
myprgram
.então execute seu programa
./myprogram
fonte
Como rebenvp disse, eu usei:
E faça isso para a saída:
Mas uma solução melhor é usar o
make
arquivo. Leia aqui para saber mais sobremake
arquivos.Verifique também se você adicionou os
.h
arquivos necessários nos.cpp
arquivos.fonte
Você pode usar vários comandos do g ++ e depois vincular, mas o mais fácil é usar um Makefile tradicional ou outro sistema de compilação: como o Scons (que geralmente é mais fácil de configurar do que o Makefiles).
fonte
Se você deseja usar
#include <myheader.hpp>
dentro de seus arquivos cpp, você pode usar:fonte
Eu costumava usar um Makefile personalizado que compilava todos os arquivos no diretório atual, mas precisava copiá-lo em todos os diretórios que precisava, sempre.
Por isso, criei minha própria ferramenta - o Universal Compiler, que facilitou muito o processo ao compilar muitos arquivos.
fonte
~ / In_ProjectDirectory $ g ++ coord_main.cpp coord_func.cpp coord.h
~ / In_ProjectDirectory $ ./a.out
... Trabalhou !!
Usando o Linux Mint com Geany IDE
Quando salvei cada arquivo no mesmo diretório, um arquivo não foi salvo corretamente dentro do diretório; o arquivo coord.h. Então, verifiquei novamente e ele foi salvo como coorden.h, e não incorretamente como -> coord.h.gch. As pequenas coisas. Arg !!
fonte