У меня есть проект на C ++, и я перехожу Visual Studio Solutions
в SCons
для сборок, так что пользователи Linux также могут собирать мой код. Это мой первый набег в SCons, и он очень хорошо работает с простыми проектами. Но для этого проекта у меня есть вложенная структура каталогов:
main/
sub1/*.cpp
sub2/*.cpp
sub3/*.cpp
file1.cpp
file2.cpp
И у меня есть следующее SConstruct
файл:
env = Environment()
env['PCHSTOP'] = 'stdafx.hpp'
env['PCH'] = env.PCH('stdafx.cpp')[0]
env.Program('program', [
'file1.cpp',
'file2.cpp',
'sub1/file1.cpp',
'sub2/file1.cpp',
'sub3/file1.cpp'
])
Бег scons
из командной строки вызывает следующую ошибку:
fatal error C1083: Cannot open include file: 'stdafx.hpp': No such file or directory
Очевидно, это ошибка MSVC. Но это должно быть решаемо с Scons, я просто не знаю, как ..
Я заметил, что Visual Studio скопирует все файлы * .obj в каталог сборки перед установкой ссылок по умолчанию. Я думаю, что это может быть частью решения, но, опять же, я не уверен.
Я уверен в том, что это не первый раз, когда кто-то сталкивался с этой проблемой, но Google ничего не нашел для меня.
PS: В отличие от примера, ни один из файлов не имеет конфликтов имен и теоретически может быть без проблем перемещен SCons в уплощенную структуру папок.
Похоже, вам нужно будет указать правильные пути включения в вашей среде с помощью переменной «CPPPATH» … но это трудно определить, не видя полной командной строки. Помните, что все окружения SCons изначально чисты. Так что, если вы находитесь не в том рабочем каталоге, простой «#include» не найдет заголовок, если он находится в другой папке.
Посмотри на Руководство пользователя SCons, глава 14 «Иерархические сборки», который может дать вам еще несколько идей и идей, или перейти в список рассылки Пользователя по адресу [email protected].