2012-02-18 3 views
0

waf 빌드 시스템으로 vala 라이브러리 (필자가 쓴)를 사용하여 vala 응용 프로그램을 컴파일하려고합니다.waf로 vala 라이브러리를 사용하여 vala 응용 프로그램 컴파일

는 사실이 명령을 사용하여 컴파일 할 수 있어요 :

valac -X -I/usr/local/include/ofde-1.0/ -X -lofde -o ofde-terminal src/* /usr/local/share/vala/vapi/ofde.vapi --pkg gtk+-3.0 --pkg vte-2.90 -X -DGETTEXT_PACKAGE='"ofde-terminal"' 

그러나, 나는이 다음 WScript와는를 사용하여 컴파일 드릴 수 없습니다 :

#! /usr/bin/env python 

APPNAME = 'Terminal' 
PROG_NAME = 'ofde-terminal' 
VERSION = '0.1' 

top = '.' 
out = 'build' 

def options(opt): 
    opt.load('compiler_c') 

def configure(conf): 
    conf.load('compiler_c vala') 

    conf.check_cc(lib='ofde', uselib_store='ofde') 

    conf.check_cfg(package='gtk+-3.0', uselib_store='gtk+', atleast_version='3.0', args='--cflags --libs') 
    conf.check_cfg(package='vte-2.90', uselib_store='vte', atleast_version='0.30', args='--cflags --libs') 

    conf.define('PACKAGE', APPNAME) 
    conf.define('VERSION', VERSION) 

def build(bld): 
    bld(
     cflags = ['-DGETTEXT_PACKAGE=\'"ofde-terminal"\''], 
     features='c cprogram', 
     packages = ['gtk+-3.0', 'vte-2.90'], 
     source = bld.path.ant_glob('src/*.vala'), 
     target = PROG_NAME, 
     uselib = ['gtk+', 'ofde', 'vte'], 
    ) 

나는 웹 애플리케이션 방화벽에서 다음과 같은 오류가 발생했습니다 - v :

Waf: Entering directory `/path/to/build' 
[1/5] valac: src/MainMenu.vala src/MainWindow.vala src/main.vala -> build/src/MainMenu.c build/src/MainWindow.c build/src/main.c 
17:18:52 runner ['/usr/bin/valac', '-C', '--quiet', '--profile=gobject', '--pkg=gtk+-3.0', '--pkg=vte-2.90', '/path/to/src/MainMenu.vala', '/path/to/src/MainWindow.vala', '/path/to/src/main.vala'] 
/path/to/src/MainWindow.vala:40.13-40.16: error: The type name `Tabs' could not be found 
Waf: Leaving directory `/path/to/build' 
Build failed 
-> task in 'ofde-terminal' failed (exit status 1): 
     {task 27259408: valac MainMenu.vala,MainWindow.vala,main.vala -> MainMenu.c,MainWindow.c,main.c} 
'' 

내 라이브러리에는 탭 탭이 있습니다.

나는 waf가 ofde.vapi 파일을 찾지 못한다고 생각합니다.

파일을 찾을 수있는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

1

WAF는 pkg-config 파일을 사용하여 라이브러리 종속성을 확인합니다. pkg-config 파일의 이름이 vapi 파일의 이름과 동일하지 않습니다. 그래서 나는 당신이 (필요에 따라 경로를 조정 버전 필요) 다음과 같이 수있는 ofde.pc PKG-config 파일을 만드는 것이 좋습니다 :

이 파일은/usr/lib 디렉토리 /에 위치 할 필요가
prefix=/usr 
exec_prefix=/usr 
libdir=/usr/lib 
includedir=/usr/include 
datarootdir=/usr/share 
datadir=/usr/share 

Name: ofde 
Version: 1.0 
Requires: gtk+-3.0 
Libs: -L${libdir} -lofde 
Cflags: -I${includedir}/ofde 

pkgconfig를 실행하고 다음 구성 단계를 사용하여 waf로 구성 할 수 있습니다.

conf.check_cfg(package='ofde', uselib_store='ofde', atleast_version='1.0', args='--cflags --libs') 
... 
packages = ['gtk+-3.0', 'vte-2.90', 'ofde'], 
관련 문제