1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

Add support for VFLAGS environment variable, merged with cmd args.

Using VFLAGS, you can pass common options through it to the V compiler,
without having to manually specify them everytime when you type V ...
In addition, since environment variables are *inherited*, all subprocess
V compilers, which V launches (for example when compiling with -live),
will *also* use the same VFLAGS environment variable.

Example usage:
  export VFLAGS="-debug -show_c_cmd"
  v -live message.v

=> This will keep *both* of the generated C source files .message.c
   *AND* .message_shared_lib.c . It will also cause both V compile
   subprocesses to print their resulting C compiler backend lines.
   This is very useful when using GDB to debug problems.
This commit is contained in:
Delyan Angelov 2019-07-16 18:07:28 +03:00 committed by Alexander Medvednikov
parent 17580f3013
commit 5d0cb1437c

View File

@ -96,7 +96,7 @@ mut:
fn main() {
// There's no `flags` module yet, so args have to be parsed manually
args := os.args
args := env_vflags_and_os_args()
// Print the version and exit.
if '-v' in args || '--version' in args || 'version' in args {
println('V $Version')
@ -1116,3 +1116,18 @@ v -nofmt file.v
are working on vlib)
v -embed_vlib file.v
*/
fn env_vflags_and_os_args() []string {
mut args := []string
vflags := os.getenv('VFLAGS')
if '' != vflags {
args << os.args[0]
args << vflags.split(' ')
if os.args.len > 1 {
args << os.args.right(1)
}
}else{
args << os.args
}
return args
}