Pergunta

Eu tenho usado o CMake para criar meus projetos fora da fonte, o que é realmente conveniente ao evitar poluir seu diretório de origem com arquivos desnecessários.

Supondo que os cmakelists.txt estejam no diretório atual, isso pode ser feito da seguinte forma:

mkdir build
cd build
cmake ..
make

Como posso fazer o mesmo no SCONS?

Foi útil?

Solução

Na tua SConstruct Arquivo, você usa um diretor variante:

SConscript("main.scons", variant_dir="build", duplicate=0)

Então em main.scons Você configura tudo como de costume:

env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))

É possível fazer isso sem codificar a variante DIR no Sconstruct por (AB) usando repositórios, mas essa abordagem tem seus bugs. Para o registro, você executaria o seguinte da seguinte forma para construir em outro diretório:

mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons

O mais fácil e mais viável é apenas usar variant_dir. Você então executa isso como de costume no diretório de origem de nível superior. Todos os artefatos de construção são produzidos no build Sub Diretório.

Em resposta a JepereComentário, eis como você pode escrever o Sconstruct de nível superior para adicionar um diretório de construção nomeado opcionalmente:

AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)

Então você chamaria isso da linha de comando da seguinte maneira, para criar um diretório de construção chamado "Baz":

$ scons --build=baz
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top