Geral
Gerência e Qualidade de Software
Semana 2
0
Questão
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:
I. 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.
II. 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.
III. 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.
IV. 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:
function vote(questaoId, value) {
window.location.href = "/accounts/login/?next=/questao/41/";
return;
fetch(`/vote/questao/${questaoId}/`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRFToken': 'pZNliyt6D6Y9vSmRulzAz4sGsPYFbpGNrsiaiy7DZFEAf19QJhT5KpwtAmzL7iyR'
},
body: JSON.stringify({ value: value })
})
.then(response => response.json())
.then(data => {
if (data.success) {
document.getElementById(`score-${questaoId}`).textContent = data.score;
const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`);
const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`);
upBtn.classList.remove('active-up');
downBtn.classList.remove('active-down');
if (data.user_vote === 1) upBtn.classList.add('active-up');
if (data.user_vote === -1) downBtn.classList.add('active-down');
}
});
}