0

waf を使用して Gstreamer プログラムをビルドしようとしています。waf を使用して gstream ファイルを含めるのに問題があります。

エラーが発生しています。

[ 4/37] qxx: test/Playback/GSTEngine.cpp -> build/test/Playback/GSTEngine.cpp.4.o ../test/Playback/GSTEngine.cpp:1:21: 致命的なエラー: gst/gst .h: そのようなファイルまたはディレクトリはありません

私のwscript(waf)ファイル

    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に依存するすべてのインクルードファイルを取得するように指示する方法を知りたいです。

あなたが私を助けてくれることを願っています、ありがとう。

4

1 に答える 1

0

さて、私は解決策を得ました

この行を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に変数を追加するだけです

bld(features = 'qt4 cxx cxxprogram'、includes = include、source = 'main.cpp MasterDetail.qrc'、target = 'app'、uselib = 'TAGLIB GSTREAMER'、cxxflags=cxxflags、use = use、subsystem='windows ', リンクフラグ=リンクフラグ)

于 2012-05-30T05:35:31.463 に答える