Voglio eseguire un comando in SCons che non ha alcun file di input/output (in realtà l'input e l'output sono lo stesso file). Al momento sto semplicemente eseguendolo manualmente con il sottoprocesso.Popen ma c'è un modo più sconsiderato di farlo?Esegui un comando in SCons senza dipendenze
8
A
risposta
13
È possibile utilizzare la funzione Command per eseguire qualsiasi comando esterno eseguito tramite Popen ed è possibile utilizzare la funzione AlwaysBuild per garantire che il comando venga sempre eseguito anche se il file di destinazione esiste. Scons non ama i cicli di dipendenza, quindi lascia vuoto l'elenco dei sorgenti.
myfile = env.Command('myfile.out', [], 'echo Hello world > $TARGETS')
env.AlwaysBuild(myfile)
Lo scons wiki ha anche una ricetta per PhonyTargets che lo rende facile impostare un sacco di semplici comandi.
Problemi correlati
- 1. Esegui un singolo comando nello script di shell senza sudo
- 2. ANT - Esegui una singola destinazione ma senza dipendenze
- 3. Esegui un comando cat con in sed comando in linux
- 4. Python & SCons & Matlab: Ingresso comando errato
- 5. Esegui comando esterno
- 6. Esegui comando ogni secondo
- 7. EF6 - Esegui il comando Update-Database senza semi
- 8. VIM, Esegui un comando su più file
- 9. Esegui un comando dopo la disinstallazione
- 10. Esegui comando vim da riga di comando
- 11. Esegui comando CMD dal codice
- 12. Comando C# Esegui sistema remoto
- 13. Esegui attività in base alle dipendenze in Go
- 14. SCons: cicli di dipendenza?
- 15. Esegui un obiettivo Maven personalizzato senza pom.xml
- 16. cosa fa scons scons a creare file quando ho un builder personalizzato?
- 17. Esegui un processo ed esci senza attenderlo
- 18. Esegui un comando su Remote Machine in Python
- 19. Cambia directory ed esegui il file in un comando
- 20. unix - esegui un comando come un altro utente
- 21. Esegui un comando particolare su più buffer di emacs
- 22. Esegui senza eseguire il debug in eclissi
- 23. Esegui un comando sugli host remoti tramite capistrano dalla riga di comando
- 24. Esegui un'applicazione React Native senza avviare Xcode?
- 25. Esegui un comando in un server Windows remoto e recupera l'output della console in C# .NET
- 26. scons costruzione ereditarietà ambiente
- 27. Esegui riga di comando e restituire l'output del comando
- 28. Esegui riga di comando e comando da VBS
- 29. Esegui comando da riga di comando da NSIS
- 30. Esegui comando all'avvio di Rails Console
Se esiste già una regola per creare "myfile.out", si lamenta che esistono diversi modi per creare il target. Voglio avere una regola per creare il file e un'altra per modificarla. –
Penso che avere due regole per un obiettivo sia una cattiva idea. Come fa lo scons a sapere se la regola "modifica" è stata invocata se il bersaglio esiste? Funzionerà meglio se hai due obiettivi, uno per ogni regola. O avere una regola che esegue sia le azioni 'create' che 'modify'. –
Presta attenzione ai documenti scons dove afferma che "AlwaysBuild" è un nome fuorviante. Ci sono ancora alcune valutazioni di scons di regole prima di emettere effettivamente il comando. –