SCons - Заголовки / Библиотеки в нестандартном месте - PullRequest
3 голосов
/ 13 января 2011

Я пытаюсь использовать SCons для компиляции программы, для которой требуется набор зависимостей, которые я установил в нестандартном месте.

Я установил зависимости в / home / dja /автоматическое чтение печатного материалаСейчас я пытаюсь скомпилировать основную программу и не могу понять, как сообщить 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 ]

5 голосов
/ 19 января 2011

Вам необходимо создать среду и установить соответствующие переменные:

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 - это список библиотек, которые можно связать с вашей программой.

3 голосов
/ 13 января 2011

В отличие от make и его соглашений для определенных переменных среды или параметров --with-X для configure , автору SConstruct необходимо предоставить пользователю способ указания переопределений , По умолчанию scons не считывает переменные сборки из среды.

Существуют различные способы обработки пользовательской конфигурации (см. Переменные , о которых я только что узнал), но я не знаю широко признанных соглашений. А для того, кто находится на вашем месте, вам нужно положиться на автора, пишущего документацию по сборке или приличное scons --help описание, или прибегнуть к самостоятельному чтению SConstruct (к которому иногда приходится прибегать с плохо написанным нетрадиционные Makefiles).

Кстати, я был бы рад исправить это, если мои знания о scons устарели.

0 голосов
/ 29 августа 2016

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 для включения заголовочных файлов из нестандартного местоположения.

0 голосов
/ 06 июня 2016

Я обнаружил, что передача LINKPATH = "- L / blah /" в качестве переменной среды для scons работала, когда передача LDFLAGS = "- L / blah /" не выполнялась.

0 голосов
/ 13 января 2011

Возможно, это можно сделать, отредактировав файл SConstruct: http://osdir.com/ml/programming.tools.scons.user/2005-09/msg00060.html

Это довольно отстойно - есть ли лучший общий способ?

(В этом случае чтение файла SConstruct показало, что было специальное условие для указания пути к зависимости, поэтому я решил непосредственную проблему, но не общую.)

...