maneira apropriada para obter um fora-de acumulação de origem no projeto cmake multi-parte

StackOverflow https://stackoverflow.com/questions/1230644

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu uso cmake para construir, testar e instalar o meu projeto. Meu caminho é um pouco bruto: Eu uso um script como este para obter uma compilação out-of-source:

DIR=debug_build &&
rm -fr ./${DIR} &&
mkdir -p ${DIR} &&
cd ${DIR} &&
cmake -D CMAKE_BUILD_TYPE=Debug $@ .. &&
make 

Eu acho que eu poderia pelo menos colocá-lo em makefile, mas não é ele estranho usar Makefile para executar cmake para gerar novos Makefiles e executar outra marca?

O que é a maneira correta de fazê-lo? Does CEfectue tem uma opção para evitar a chamada "cd"?

Recentemente, tornou-se ainda mais complicado como eu factoread uma biblioteca que gostaria de compilar, testar e distribuir separadamente. Eu quero evitar a duplicação de todo o material que eu tenho no meu top CMakeLists.txt.

Como fazê-lo corretamente com cmake?

Foi útil?

Solução

Não, CMake não tem qualquer opção. Eu normalmente gosto de ter um invólucro Makefile para controlar CEfectue-invocações.

O principal problema aqui é que o Makefile-gerador não suporta especificando a configuração quando executar o make, como o gerador Visual Studio faz. Eu acho que existe um pedido de recurso interposto para este, mas seria procedimento muito invasivo para correção.

Outras dicas

Esta parece ser a forma mais comum de lidar com isso. Eu normalmente visto (e usado) scripts em lotes (tanto scripting shell no UNIX, ou apenas arquivos em lote no Windows) para lidar com isso, portanto executar ./build irá criar a pasta de compilação, CD lá, cmake executar, construir, em seguida, ir de volta para a pasta original.

Pode-se também usar CMake GUI que irá criar a pasta de compilação automaticamente se ele não existe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top