Gstreamer在waf中包含错误。gst/gst.h:没有这样的>文件或目录
我正在尝试使用waf构建Gstreamer程序。我在使用waf包含gstream文件时遇到一些问题 我犯了一个错误 [4/37]qxx:test/Playback/GSTEngine.cpp-> 构建/测试/回放/GSTEngine.cpp.4.o ../test/Playback/GSTEngine.cpp:1:21:致命错误:gst/gst.h:没有这样的错误 文件或目录 我的WScript WAF文件Gstreamer在waf中包含错误。gst/gst.h:没有这样的>文件或目录,gstreamer,waf,Gstreamer,Waf,我正在尝试使用waf构建Gstreamer程序。我在使用waf包含gstream文件时遇到一些问题 我犯了一个错误 [4/37]qxx:test/Playback/GSTEngine.cpp-> 构建/测试/回放/GSTEngine.cpp.4.o ../test/Playback/GSTEngine.cpp:1:21:致命错误:gst/gst.h:没有这样的错误 文件或目录 我的WScript WAF文件 top = '.' out = 'build' def opt
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_cxx qt4 compiler_c')
#opt.recurse(subdirs)
def configure(conf):
conf.load('compiler_cxx qt4 compiler_c boost')
conf.check_cfg(atleast_pkgconfig_version='0.0.0')
gstreamer_version = conf.check_cfg(modversion='gstreamer-0.10', mandatory=True)
conf.check_cfg(package='gstreamer-0.10')
conf.check_cfg(package='gstreamer-0.10', uselib_store='MYGSTREAMER', mandatory=True)
program_options')
conf.env.append_value('CXXFLAGS', ['-DWAF=1']) # test
def build(bld):
cxxflags = bld.env.commonCxxFlags
uselibcommon = 'QTMAIN QTCORE QTGUI QTOPENGL QTSVG QWIDGET QTSQL QTUITOOLS QTSCRIPT gstreamer-0.10'
bld(features = 'qt4 cxx', includes = '.', source = 'Util.cpp' , target = 'Util.o', uselib = uselibcommon, cxxflags=cxxflags)
bld(features = 'qt4 cxx', includes = '.', source = 'MetaData.cpp' , target = 'MetaData.o', uselib = uselibcommon, cxxflags=cxxflags)
bld(features = 'qt4 cxx', includes = '.', source = 'id3.cpp' , target = 'id3.o', uselib = uselibcommon, cxxflags=cxxflags)
use = [ 'MetaData.o', 'Util.o' , 'id3.o']
bld(features = 'qt4 cxx', includes = '.' , source = 'GSTEngine.cpp' , target = 'GSTEngine.o', uselib = uselibcommon, use = use, lib = ['gstreamer-0.10'], libpath = ['/usr/lib'], cxxflags=cxxflags)
from waflib.TaskGen import feature, before_method, after_method
@feature('cxx')
@after_method('.')
@before_method('apply_incpaths')
def add_includes_paths(self):
incs = set(self.to_list(getattr(self, 'includes', '')))
for x in self.compiled_tasks:
incs.add(x.inputs[0].parent.path_from(self.path))
self.includes = list(incs)
如果我尝试将此列表包含到GSTEngine.cpp bld语句中的include参数中,它将工作并进入下一个文件
['/usr/include/gstreamer-0.10','/usr/include/glib-2.0',
“/usr/lib/x86_64-linux-gnu/glib-2.0/include/”,
“/usr/include/libxml2/”]
我是waf新手,我想知道如何告诉waf获取所有依赖于gstreamer的包含文件
希望你能帮助我,谢谢。我找到了解决办法 我在waf的conf部分添加了这一行
conf.check_cfg(atleast_pkgconfig_version='0.0.0')
conf.check_cfg(package='gstreamer-0.10', uselib_store='GSTREAMER', args='--cflags --libs', mandatory=True)
conf.check_cfg(package='taglib', uselib_store='TAGLIB', args='--cflags --libs', mandatory=True)
那么pkg config会找到lib并将其存储在uselib变量uselib_store='TAGLIB'中。因此,只需在waf的构建部分将变量添加到uselib
conf.check_cfg(atleast_pkgconfig_version='0.0.0')
conf.check_cfg(package='gstreamer-0.10', uselib_store='GSTREAMER', args='--cflags --libs', mandatory=True)
conf.check_cfg(package='taglib', uselib_store='TAGLIB', args='--cflags --libs', mandatory=True)
bldfeatures='qt4 cxx cxxprogram',includes=include,source=
'main.cpp MasterDetail.qrc',target='app',uselib='TAGLIB GSTREAMER',
cxxflags=cxxflags,use=use,subsystem='windows',linkflags=linkflags