У меня следующая структура проекта:
/project
/src_dirs
/src_dir_1
/...
/include_dirs
/inc_dir_1
/...
/output
SConstruct
/Sconscripts
lib1_sconscript
lib2_sconscript
/...
objects/
/...
libs/
/...
Процесс сборки, вызываемый из каталога output
. поэтому все пути в sconscripts
относятся к каталогу output
. мои файлы sconscript
создаются автоматически. как вы можете видеть ниже, пути к исходным файлам и к включаемым файлам являются относительными. это демонстрационный sconscript
файл:
Import('libaEnv')
includes = ['../../project/include_dirs/inc_dir_1/be/cmn/inc', '../../project/include_dirs/inc_dir_1/be/be/cmn/api_inc']
directives = ['-CC','-c','-g']
code_switches = ['FAST_RUNG_MLK', 'EN_PRIORITY']
listDefines = code_switches
linkLibs = []
crt = libaEnv.Object(target='objects/crt.o', source='../../project/src_dirs/src_dir_1/crt.c', CPPDEFINES=listDefines, CPPFLAGS=directives, CPPPATH=includes)
ert = libaEnv.Object(target='objects/ert.o', source='../../project/src_dirs/src_dir_1/ert.c', CPPDEFINES=listDefines, CPPFLAGS=directives, CPPPATH=includes)
urt = libaEnv.Object(target='objects/urt.o', source='../../project/src_dirs/src_dir_1/urt.c', CPPDEFINES=listDefines, CPPFLAGS=directives, CPPPATH=includes)
liba = libaEnv.Library (target='libs/liba.a', source=[crt,ert,urt])
Return('liba')
Я видел, что scons вызывает компилятор с абсолютными путями к исходным файлам и файлам заголовков. Я видел это, запустив scons с -verbose
(я также подтвердил это, распечатав командную строку в Action.py
в методе spawn
).
Моя версия scons: SCons 2.5.1
и i я работаю с python 2.7
.
Как я могу заставить scons вызывать compiler
только с относительными путями?