Como fazer uma construção fora da fonte com o SCONS?
-
21-09-2019 - |
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?
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