多个库编译
在一个项目中,可能会存在多种处理器版本的编译目标,也可能会在不同平台上进行编译,这两个情况已经在前面给出了一般的解决方案。本章节来解决在一个项目中,如果要使用几套不同版本的代码和不同的存储代码库,怎么来使用 SCons
中提供的函数来解决这种冲突。
Repository
添加 Repository
来指定搜寻多个存储库的搜索优先级,对于不存在的目录和当前目录会自动排除。
先在 hello
和 hello2
中添加两个相同的源文件 hello.c
,执行搜索路径为 ['./hello2', './hello']
,执行 scons -Q
第一次会选择 hello2/hello.c
来构建,如果删除掉 hello2/hello.c
后,再次执行 scons -Q
,会选择 hello/hello.c
来进行构建。
# SConstruct
env = Environment()
env.Program('hello.c')
Repository('./hello2', './hello')
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day9
$ scons -Q
gcc -o hello.o -c hello2\hello.c
gcc -o hello.exe hello.o
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day9
$ rm hello2/hello.c
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day9
$ scons -Q
scons: '.' is up to date.
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day9
$ scons -Q -c
Removed hello.o
Removed hello.exe
admin@DESKTOP-NQU1HUV C:\Users\admin\Desktop\scons\day9
$ scons -Q
gcc -o hello.o -c hello\hello.c
gcc -o hello.exe hello.o
Repository
也可以指定头文件搜索路径,但是需要在 env
创建时,添加上 CCPPATH
变量。
# SConstruct
env