2011-01-13 5 views
3

비표준 위치에 설치 한 종속성 세트가 필요한 프로그램을 컴파일하는 데 SCons를 사용하려고합니다.SCons - 비표준 위치의 헤더/라이브러리

/home/dja/ocr에 종속성을 설치했습니다. 이제는 주 프로그램을 컴파일하려고하는데 SCons에게 라이브러리와 헤더를 찾을 위치를 알려주는 방법을 알아낼 수 없습니다.

내가 (다른 사람의 사이에) 시도했다 :

scons prefix=/home/dja/ocr 

scons includepath=/home/dja/ocr/include libpath=/home/dja/ocr/lib 

env LIBPATH=/home/dja/ocr/lib INCLUDEPATH=/home/dja/ocr/include scons 

...etc... 

결과는 항상 동일합니다 : 내가 구글에 대한 답을 찾을 수 없어

scons: Reading SConscript files ... 
Currently supported OS version: Ubuntu 10.04 
Checking for C++ library iulib... no 
AssertionError: : 
    File "/home/dja/ocr/src/ocropus/SConstruct", line 107: 
    assert conf.CheckLibWithHeader("iulib","iulib/iulib.h","C++"); 

.

제대로 작동하려면 올바른 SCons foo가 무엇입니까?

답변

3

와는 달리 및 특정 환경 변수에 대한 규약을 --with-X으로 설정하고 으로 구성하면 사용자가 재정의를 지정하는 방법을 제공해야합니다. 기본적으로 scons은 환경에서 빌드 변수를 읽지 않습니다.

사용자 구성을 처리하는 방법에는 여러 가지가 있습니다 (앞에서 방금 들었던 Variables 참조). 그러나 나는 널리 알려진 규칙을 알고 있지 않습니다. 그리고 자신의 위치에있는 사용자는 빌드 설명서 나 괜찮은 scons --help 설명을 쓰는 저자에게 의존해야합니다. 또는 직접 구조를 읽어야합니다. 으로 잘못 작성된 형식이없는 Makefile을 사용해야합니다.

나는 현재 scons에 대한 지식이 오래되면이 문제를 해결할 수있어서 기쁩니다.

0

는 SConstruct 파일을 편집하여이 작업을 수행하는 것이 가능 보인다 http://osdir.com/ml/programming.tools.scons.user/2005-09/msg00060.html

이 꽤 절름발이 - 더 나은 일반적인 방법이?

(이 경우, SConstruct 파일을 읽는 것은 특별히 의존성에 대한 경로를 제공하는 특별한 규정이 있었다 보였다, 그래서 나는 즉시 문제가 있지만 일반적으로 하나를 해결했습니다.)

4

당신은 적절한 변수를 환경을 생성하고 설정해야합니다

env = Environment(
      CPPPATH=['/home/dja/ocr/include'], 
      LIBPATH=['/home/dja/ocr/lib'], 
      LIBS=['iulib']) 
env.Program('my_executable', Glob('*.c')) 

CPPPATH 점을 C 프리 프로세서 경로의 목록 (참고 : 3 P의). LIBPATH는 라이브러리가 상주하는 위치를 가리 킵니다. 마지막으로 LIBS는 프로그램과 링크 할 라이브러리 목록입니다.

0

LDFLAGS = "- L/blah /"를 전달할 때 scons가 작동하는 환경 변수로 LINKPATH = "- L/blah /"가 전달되는 것을 발견했습니다.

0

sudo scons --32 --libpath =/home/test/project/stage/lib/--cpppath =/홈/테스트/프로젝트/부스트/--prefix =/home/test/mongClient/output - -dbg = on --opt = on install

여기서 libpath는 비표준 위치의 라이브러리를 연결하기위한 것입니다. cpppath는 비표준 위치의 헤더 파일을 포함하기위한 것입니다.