資源簡介
用vs2015編譯通過的pjproject-2.8,并且添加了SipekSdk引用的pjsipdll.dll項(xiàng)目
代碼片段和文件信息
import?sys
import?os
REMOVE_THESE?=?[“-I/usr/include“?“-I/usr/include/“?“-L/usr/lib“?“-L/usr/lib/“]
class?Pkg:
def?__init__(self?pkg_name):
self.name?=?pkg_name
self.priority?=?0
self.vars?=?{}
def?parse(self?pkg_config_path):
f?=?None
for?pkg_path?in?pkg_config_path.split(‘:‘):
if?pkg_path[-1]?!=?‘/‘:
pkg_path?+=?‘/‘
fname?=?pkg_path?+?self.name?+?‘.pc‘
try:
f?=?open(fname?“r“)
break
except:
continue
if?not?f:
?? #sys.stderr.write(“pkgconfig.py:?unable?to?find?%s.pc?in?%s\n“?%?(self.name?pkg_config_path))
return?False
for?line?in?f.readlines():
line?=?line.strip()
if?not?line:
continue
if?line[0]==‘#‘:
continue
pos1?=?line.find(‘=‘)
pos2?=?line.find(‘:‘)
if?pos1?>?0?and?(pos1? pos?=?pos1
elif?pos2?>?0?and?(pos2? pos?=?pos2
else:
continue
name?=?line[:pos].lower()
value?=?line[pos+1:]
self.vars[name]?=?value
f.close()
for?name?in?self.vars.keys():
value?=?self.vars[name]
while?True:
pos1?=?value.find(“${“)
if?pos1?0:
break
pos2?=?value.find(“}“)
if?pos2?0:
break
value?=?value.replace(value[pos1:pos2+1]?self.vars[value[pos1+2:pos2]])
self.vars[name]?=?value
return?True
def?requires(self):
if?not?‘requires‘?in?self.vars:
return?[]
deps?=?[]
req_list?=?self.vars[‘requires‘]
for?req_item?in?req_list.split(‘‘):
req_item?=?req_item.strip()
for?i?in?range(len(req_item)):
if?“=<>“.find(req_item[i])?>=?0:
deps.append(req_item[:i].strip())
break
return?deps
def?libs(self):
if?not?‘libs‘?in?self.vars:
return?[]
return?self.vars[‘libs‘].split(‘?‘)
def?cflags(self):
if?not?‘cflags‘?in?self.vars:
return?[]
return?self.vars[‘cflags‘].split(‘?‘)
def?calculate_pkg_priority(pkg?pkg_dict?loop_cnt):
if?loop_cnt?>?10:
sys.stderr.write(“Circular?dependency?with?pkg?%s\n“?%?(pkg))
return?0
reqs?=?pkg.requires()
prio?=?1
for?req?in?reqs:
if?not?req?in?pkg_dict:
continue
req_pkg?=?pkg_dict[req]
prio?+=?calculate_pkg_priority(req_pkg?pkg_dict?loop_cnt+1)
return?prio
if?__name__?==?“__main__“:
pkg_names?=?[]
pkg_dict?=?{}
commands?=?[]
exist_check?=?False
for?i?in?range(1len(sys.argv)):
if?sys.argv[i][0]?==?‘-‘:
cmd?=?sys.argv[i]
commands.append(cmd)
if?cmd==‘--exists‘:
exist_check?=?True
elif?cmd==“--help“:
print?“This?is?not?very?helpful?is?it“
sys.exit(0)
elif?cmd==“--version“:
print?“0.1“
sys.exit(0)
else:
pkg_names.append(sys.argv[i])
#?Fix?search?path
PKG_CONFIG_PATH?=?os.getenv(“PKG_CONFIG_PATH“?““).strip()
if?not?PKG_CONFIG_PATH:
PKG_CONFIG_PATH=“/usr/local/lib/pkgconfig:/usr/lib/pkgconfig“
PKG_CONFIG_PATH?=?PKG_CONFIG_PATH.replace(“;“?“:“)
#?Parse?files
for?pkg_name?in?pkg_names:
pkg?=?Pkg(pkg_name)
評論
共有 條評論