docs: document env var VFLAGS (#8959)

pull/8980/head
Ben-Fields 2021-02-26 00:28:37 -06:00 committed by GitHub
parent 59d4d0ef1d
commit 7bee3dc489
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 8 deletions

View File

@ -121,7 +121,7 @@ For more details and troubleshooting, please visit the [vab GitHub repository](h
* [Memory-unsafe code](#memory-unsafe-code)
* [Structs with reference fields](structs-with-reference-fields)
* [sizeof and __offsetof](#sizeof-and-__offsetof)
* [Calling C functions from V](#calling-c-functions-from-v)
* [Calling C from V](#calling-c-from-v)
* [Debugging generated C code](#debugging-generated-c-code)
* [Conditional compilation](#conditional-compilation)
* [Compile time pseudo variables](#compile-time-pseudo-variables)
@ -3210,7 +3210,9 @@ assert __offsetof(Foo, a) == 0
assert __offsetof(Foo, b) == 4
```
## Calling C functions from V
## Calling C from V
### Example
```v
#flag -lsqlite3
@ -3277,7 +3279,7 @@ fn main() {
}
```
### #flag
### Passing C compilation flags
Add `#flag` directives to the top of your V files to provide C compilation flags like:
@ -3286,7 +3288,7 @@ Add `#flag` directives to the top of your V files to provide C compilation flags
- `-L` for adding C library files search paths
- `-D` for setting compile time variables
You can use different flags for different targets.
You can (optionally) use different flags for different targets.
Currently the `linux`, `darwin` , `freebsd`, and `windows` flags are supported.
NB: Each flag must go on its own line (for now)
@ -3299,6 +3301,13 @@ NB: Each flag must go on its own line (for now)
#flag linux -DIMGUI_IMPL_API=
```
In the console build command, you can use `-cflags` to pass custom flags to the backend C compiler.
You can also use `-cc` to change the default C backend compiler.
For example: `-cc gcc-9 -cflags -fsanitize=thread`.
You can also define a `VFLAGS` environment variable in your terminal to store your `-cc`
and `cflags` settings, rather than including them in the build command each time.
### #pkgconfig
Add `#pkgconfig` directive is used to tell the compiler which modules should be used for compiling
@ -3361,10 +3370,6 @@ You can see a complete minimal example for using C code in a V wrapper module he
Another example, demonstrating passing structs from C to V and back again:
[interoperate between C to V to C](https://github.com/vlang/v/tree/master/vlib/v/tests/project_with_c_code_2).
You can use `-cflags` to pass custom flags to the backend C compiler.
You can also use `-cc` to change the default C backend compiler.
For example: `-cc gcc-9 -cflags -fsanitize=thread`.
### C types
Ordinary zero terminated C strings can be converted to V strings with