|  | ||
|---|---|---|
| .. | ||
| bin | ||
| README.md | ||
| main.v | ||
| pkgconfig.v | ||
| v.mod | ||
		
			
				
				README.md
			
		
		
			
			
		
	
	v-pkgconfig
This module implements the pkg-config tool as a library in pure V.
Features:
- Simple API, but still not stable, but shouldnt change much
- Runs 2x faster than original pkg-config
- Commandline tool that aims to be compatible with pkg-config
- Resolve full path for .pcfile given a name
- Recursively parse all the dependencies
- Find and replace all inner variables
Todo/Future/Wish:
- 100% compatibility with pkg-configoptions
- Integration with V, to support pkgconfig with system()
- Strictier pc parsing logic, with better error reporting
Example
The commandline tool is available in vlib/pkgconfig/bin/pkgconfig.v
$ ./bin/pkgconfig -h
pkgconfig 0.2.0
-----------------------------------------------
Usage: pkgconfig [options] [ARGS]
Options:
  -V, --modversion          show version of module
  -d, --description         show pkg module description
  -h, --help                show this help message
  -D, --debug               show debug information
  -l, --list-all            list all pkgmodules
  -e, --exists              return 0 if pkg exists
  -V, --print-variables     display variable names
  -r, --print-requires      display requires of the module
  -a, --atleast-version <string>
                            return 0 if pkg version is at least the given one
      --exact-version <string>
                            return 0 if pkg version is at least the given one
  -v, --version             show version of this tool
  -c, --cflags              output all pre-processor and compiler flags
  -I, --cflags-only-I       show only -I flags from CFLAGS
      --cflags-only-other   show cflags without -I
  -s, --static              show --libs for static linking
  -l, --libs                output all linker flags
      --libs-only-l         show only -l from ldflags
  -L, --libs-only-L         show only -L from ldflags
      --libs-only-other     show flags not containing -l or -L
$
Using the API from the V repl
>>> import pkgconfig
>>> opt := pkgconfig.Options{}
>>> mut pc := pkgconfig.load('r_core', opt) or { panic(err) }
>>> pc.libs
['-L/usr/local/lib', '-lr_core', '-lr_config', '-lr_util', '', '-ldl', '-lr_cons', '-lr_io', '-lr_socket', '-lr_hash', '-lr_crypto', '-lr_flag', '-lr_asm', '-lr_syscall', '-lr_lang', '-lr_parse', '-lr_reg', '-lr_debug', '-lr_anal', '-lr_search', '-lr_bp', '-lr_egg', '-lr_bin', '-lr_magic', '-lr_fs']
>>>