Carregando...
Carregando...
Ajude a melhorar a plataforma
Durante a configuração de um projeto C++ com múltiplos arquivos-fonte e diretórios, o uso de CMake tornou-se essencial para automatizar a geração do projeto e controlar o processo de compilação de forma eficiente. O desenvolvedor deseja compilar um executável principal, organizar os arquivos em subdiretórios e incluir bibliotecas externas de forma modular, mantendo clareza e reutilização no projeto. Considerando práticas reais de uso do CMake nesse contexto, analise as afirmativas a seguir: O comando add_subdirectory() permite incluir subdiretórios que contenham seus próprios arquivos CMakeLists.txt, possibilitando a organização modular de bibliotecas ou partes da aplicação. A instrução target_include_directories() pode ser usada para especificar diretórios de cabeçalhos para um alvo específico, evitando que os includes precisem ser definidos globalmente. A função find_package() permite localizar bibliotecas externas instaladas no sistema, mas seu uso depende da existência de módulos de configuração apropriados para cada biblioteca. O comando add_executable() deve ser utilizado apenas dentro de subdiretórios, e não no diretório principal do projeto, onde apenas configurações globais devem ser declaradas. Está correto o que se afirma em:
Explique melhor esta questão
Abre o Tutor com o enunciado e as alternativas já no campo — você revisa e envia.
Esta questão foi verificada por um de nossos administradores.
A afirmativa I é correta, pois o comando add_subdirectory() permite que subdiretórios contendo seus próprios CMakeLists.txt sejam incluídos de forma modular no projeto principal. Isso facilita a organização de bibliotecas reutilizáveis e módulos independentes. Combinado ao target_link_libraries(), o CMake gerencia corretamente as dependências entre os alvos, propagando os caminhos e configurações automaticamente. A afirmativa II é correta, pois target_include_directories() é a forma recomendada de especificar diretórios de cabeçalhos para um alvo específico, como uma biblioteca ou executável. Essa prática evita poluição global do escopo e melhora a modularidade, garantindo que apenas os alvos que realmente precisam de determinados includes os utilizem, o que é essencial em projetos com muitos módulos. A afirmativa III é correta, pois find_package() é o método padrão para localizar e importar bibliotecas externas já instaladas no sistema ou no ambiente de desenvolvimento. Ele automatiza a inclusão de diretórios de cabeçalhos, bibliotecas binárias e definições necessárias, desde que haja arquivos de configuração compatíveis (como FindXYZ.cmake ou XYZConfig.cmake), permitindo integração limpa com projetos externos. A afirmativa IV é incorreta, pois não há restrição quanto ao local em que add_executable() pode ser utilizado. Ele pode ser chamado tanto no diretório principal quanto em subdiretórios, desde que seja dentro de um CMakeLists.txt. A sua função é declarar um alvo executável e associar os arquivos-fonte necessários, independentemente da hierarquia do projeto.