SCons не нашли «stdafx.hpp» при использовании вложенных каталогов

У меня есть проект на 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 в уплощенную структуру папок.

0

Решение

Похоже, вам нужно будет указать правильные пути включения в вашей среде с помощью переменной «CPPPATH» … но это трудно определить, не видя полной командной строки. Помните, что все окружения SCons изначально чисты. Так что, если вы находитесь не в том рабочем каталоге, простой «#include» не найдет заголовок, если он находится в другой папке.
Посмотри на Руководство пользователя SCons, глава 14 «Иерархические сборки», который может дать вам еще несколько идей и идей, или перейти в список рассылки Пользователя по адресу [email protected].

0

Другие решения


По вопросам рекламы [email protected]