SCons - 非标准位置的标题/库

时间:2011-01-13 09:37:46

标签: scons building

我正在尝试使用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++");  

我无法在Google上找到答案。

使这个工作正常的SCons foo是什么?

5 个答案:

答案 0 :(得分:5)

您需要创建一个环境并设置适当的变量:

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是一个与您的程序链接的库列表。

答案 1 :(得分:3)

make 及其针对某些环境变量的约定或配置--with-X选项不同,SConstruct的作者需要提供一种方法用户指定替代。默认情况下, scons 不会从环境中读取构建变量。

有多种方法可以处理用户配置(请参阅我刚学到的Variables),但我不了解广泛认可的约定。对于您所在位置的用户,您需要依赖撰写构建文档或体面scons --help描述的作者,或者自己阅读SConstruct(有时您必须使用写得不好< / strike>非常规Makefiles)。

顺便说一下,如果我对scons的了解已经过时,我很乐意对此予以纠正。

答案 2 :(得分:0)

似乎可以通过编辑SConstruct文件来完成此操作:http://osdir.com/ml/programming.tools.scons.user/2005-09/msg00060.html

这很蹩脚 - 有更好的一般方法吗?

(在这种情况下,阅读SConstruct文件显示有一个特殊的规定,专门提供依赖的路径,所以我已经解决了当前的问题,但不是一般问题。)

答案 3 :(得分:0)

我发现传递LINKPATH =“ - L / blah /”作为scons工作的环境变量,当传递LDFLAGS =“ - L / blah /”时没有。

答案 4 :(得分:0)

sudo scons --32 --libpath = / home / test / project / stage / lib / --cpppath = / home / test / project / boost / --prefix = / home / test / mongClient / output - dbg = on --opt = on install

其中libpath用于从非标准位置链接库。 cpppath用于包含来自非标准位置的头文件。