"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como compilar e vincular vários arquivos .cpp em um único binário?

Como compilar e vincular vários arquivos .cpp em um único binário?

Publicado em 2024-11-11
Navegar:862

How to Compile and Link Multiple .cpp Files into a Single Binary?

Como compilar e vincular vários arquivos .cpp em um binário

Este artigo tem como objetivo abordar a questão de compilar vários arquivos .cpp em .o e vinculá-los em um único binário.

Configuração do Makefile

Para conseguir isso, um Makefile pode ser utilizado com o seguinte conteúdo:

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g   $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g   $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

Explicação:

  • SRC_DIR: Especifica o diretório que contém os arquivos .cpp de origem.
  • OBJ_DIR: Indica o diretório onde os objetos .o serão criados.
  • SRC_FILES: A lista de todos os arquivos .cpp no ​​SRC_DIR.
  • OBJ_FILES: Uma lista de todos os objetos .o que serão gerados.
  • main.exe: O nome do binário final.
  • LDFLAGS: Sinalizadores do vinculador.
  • CPPFLAGS: Sinalizadores do pré-processador C.
  • CXXFLAGS: Sinalizadores do compilador C.

Geração de gráfico de dependência

Para gerar automaticamente dependências entre arquivos de origem e de objeto, adicione o seguinte a o Makefile:

CXXFLAGS  = -MMD
-include $(OBJ_FILES:.o=.d)

Melhores Práticas

Essa abordagem é comumente usada para compilar e vincular vários arquivos C. No entanto, é essencial consultar o Manual do GNU Make para obter orientações adicionais e opções avançadas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3