以下是我的简单案例。我有一个源文件结构如下:
.
├── SConstruct
└── src
├── SConscript
├── staticLib
│ ├── classInStaticLib.cpp
│ ├── classInStaticLib.h
│ └── SConscript
└── test.cpp
SConstruct:
VariantDir('build', 'src', duplicate=0)
SConscript('build/SConscript')
src/SConscript:
import os
lib = 'staticLib'
SConscript(os.path.join(lib, 'SConscript'))
Program( 'test',
'test.cpp',
CPPPATH = lib,
LIBS = lib,
LIBPATH = lib )
src/staticLib/SConscript:
Library('staticLib', 'classInStaticLib.cpp')
我运行scons后,在命令行界面中看到了以下信息:
g++ -o build/staticLib/classInStaticLib.o -c src/staticLib/classInStaticLib.cpp
ar rc build/staticLib/libstaticLib.a build/staticLib/classInStaticLib.o
ranlib build/staticLib/libstaticLib.a
g++ -o build/test.o -c -Ibuild/staticLib -Isrc/staticLib src/test.cpp
g++ -o build/test build/test.o -Lbuild/staticLib -Lsrc/staticLib -lstaticLib
scons已成功完成,但请注意第4行中有"-Ibuild/staticLib"和"-Isrc/staticLib",第5行中有"-Lbuild/staticLib"和"-Lsrc/staticLib"。应该只有一个。
这是为什么呢?