⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkg-config

📁 samba最新软件
💻
字号:
#!/usr/bin/perl# Simple pkg-config implementation in perl# jelmer@samba.org, November 2006use strict;use Getopt::Long;my @dirs = split(/:/, $ENV{PKG_CONFIG_PATH});my $opt_help = 0;my $opt_libs = 0;my $opt_cflags = 0;my $opt_static = 0;my $result = GetOptions (	    'help|h|?' => \$opt_help, 		'static' => \$opt_static,		'libs' => \$opt_libs,		'cflags' => \$opt_cflags	    );if (not $result) {	exit(1);}if ($opt_help) {	print "pkg-config replacement in perl\n";	print "Copyright (C) 2006 Jelmer Vernooij <jelmer\@samba.org>\n";	print "\n";	print "Usage: pkg-config [OPTIONS] PACKAGE...\n";	print " --help			Print this help message\n";	print " --static		Print flags for static libraries\n";	print " --libs			Print linker flags\n";	print " --cflags		Print C compiler flags\n";	print "\n";	exit(0);}sub find_path($){	my $name = shift;	foreach my $dir (@dirs) {		if (-f "$dir/$name-uninstalled.pc") {			return "$dir/$name-uninstalled.pc";		}	} 	foreach my $dir (@dirs) {		if (-f "$dir/$name.pc" ) {			return "$dir/$name.pc";		}	}	die("No such package `$name'");}sub ReplaceVars($$){	my ($expr, $vars) = @_;	$_ = $expr;	while (/(.*)\${([^}]+)}(.*)/) {		$_ = "$1$vars->{$2}$3";	}	return $_;}sub Parse($){	my $name = shift;	my $path = find_path($name);	my %variables = ();	my %fields = ();	my $lineno = 0;	open(IN, "<$path") or die("Unable to open $path: $!");	foreach (<IN>) {		$lineno+=1;		next if (/^#.*/);		if (/^([A-Za-z.]+): (.*)$/) {			$fields{$1} = ReplaceVars($2, \%variables);		} elsif (/^([A-Za-z_]+)=(.*)$/) {			$variables{$1} = ReplaceVars($2, \%variables);		} elsif (/^[ \t]*$/) {		} else {			warn("$path:$lineno: parse error");		}	}	close(IN);	return \%fields;}sub Cflags($){	my $name = shift;	my $fields = Parse($name);	my @cflags = split(/ /, $fields->{Cflags});	foreach (split(/[, ]/, $fields->{Requires})) {		push (@cflags, Cflags($_));	}	return @cflags;}sub Libs($){	my $name = shift;	my $fields = Parse($name);	my @libs = split(/ /, $fields->{Libs});	foreach (split(/[, ]/, $fields->{Requires})) {		push (@libs, Libs($_));	}	if ($opt_static) {		foreach (split(/[ ,]/, $fields->{"Requires.private"})) {			push (@libs, Libs($_));		}	}	return @libs;}my @out = ();foreach my $pkg (@ARGV) {	push (@out, Libs($pkg)) if ($opt_libs);	push (@out, Cflags($pkg)) if ($opt_cflags);}sub nub{	my @list = @_;	my @ret = ();	my %seen = ();	foreach (@list) {		next if (defined($seen{$_}));		push (@ret, $_);		$seen{$_} = 1;	}	return @ret;}if ($#out >= 0) {	@out = nub(@out);	print join(' ', @out) . "\n";}exit 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -