SCons: как заставить библиотеку выбирать опции CPPPATH - PullRequest
0 голосов
/ 14 декабря 2011

У меня установлен буст под /home/username/local/include. Я хочу скомпилировать библиотеку с этим набором в CPPPATH.

SConstruct:

env = Environment(CPPPATH = '/home/username/local/include')
env.Library('MyLib', 'library.cpp')

library.cpp:

#include <boost/shared_ptr.hpp> // library.cpp:1:32: error: boost/shared_ptr.hpp: No such file or directory

void foo() { }

Однако, когда я запускаю scons, выдает ошибку error: boost/shared_ptr.hpp: No such file or directory.

То же самое для программы работает нормально.

SConstruct:

env = Environment(CPPPATH = '/home/username/local/include')
env.Program('program.cpp')

program.cpp:

#include <boost/shared_ptr.hpp> // works

int main() { return 0; }

Что мне здесь не хватает?

EDIT

Вот вывод:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o library.o -c -I/home/m/local/include library.cpp
library.cpp:1:32: error: boost/shared_ptr.hpp: No such file or directory
scons: *** [library.o] Error 1
scons: building terminated because of errors.

1 Ответ

1 голос
/ 15 декабря 2011

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

Я создал фальшивую настройку надстройки надстройки и использовал другое имя файла, чтобы случайно не попасть в мои настоящие надстройки надстройки в / usr. Я использую SCons 2.0.1.

$ find /home/acm/local/include -type f
/home/acm/local/include/boost/not_a_boost_header.hpp

library.cpp:

#include <boost/not_a_boost_header.hpp> 

void foo() { }

program.cpp:

#include <boost/not_a_boost_header.hpp> 

int main() { return 0; }

SConstruct:

env1 = Environment(CPPPATH = '/home/acm/local/include')
env1.Library('MyLib', 'library.cpp')

env2 = Environment(CPPPATH = '/home/acm/local/include')
env2.Program('program.cpp')

Результаты сборки:

$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o library.o -c -I/home/acm/local/include library.cpp
ar rc libMyLib.a library.o
ranlib libMyLib.a
g++ -o program.o -c -I/home/acm/local/include program.cpp
g++ -o program program.o
scons: done building targets.

Можете ли вы опубликовать полный вывод SCons?

...