SConscript中SharedLibrary的CCCOMSTR/LINKCOMSTR将不起作用

SConscript中SharedLibrary的CCCOMSTR/LINKCOMSTR将不起作用,c,scons,C,Scons,我对SCons还很陌生,注意到当我在SConscript中构建共享库时,CCCOMSTR和LINKCOMSTR将不起作用 以下是我的SConstruct的简化版本: CFLAGS = ["-Wall", "-pedantic", "-std=c99"] # building environment env = Environment(CFLAGS = CFLAGS, CPPDEFINES = ["DEBUG"]) # checking dependencies conf = env.Conf

我对SCons还很陌生,注意到当我在SConscript中构建共享库时,CCCOMSTR和LINKCOMSTR将不起作用

以下是我的SConstruct的简化版本:

CFLAGS = ["-Wall", "-pedantic", "-std=c99"]

# building environment
env = Environment(CFLAGS = CFLAGS, CPPDEFINES = ["DEBUG"])

# checking dependencies
conf = env.Configure()
conf.CheckHeader("stdlib.h")
conf.CheckHeader("string.h")
conf.CheckLib("libdl")

env["CCCOMSTR"]     = "Compiling $SOURCE ..."
env["LINKCOMSTR"]   = "Linking $TARGET ..."

SConscript(dirs = ["lib1", "lib2"], exports=["env", "conf"], name = "SConscript")

# main function
env.Program(target = "prog", LIBS=["libdl"], source = Glob("*.c"))
而图书馆的SConscript看起来像:

Import("env", "conf")
env.SharedLibrary(target = "test1", source = Glob("*.c"))
我的期望是
env[“CCCOMSTR”]
env[“LINKCOMSTR”]
应该通过导入进行传播并正确显示。然而,这并没有发生,我看到的是gcc/clang命令。 在SConscript中设置这些变量也没有任何区别

结果如下:

scons: Reading SConscript files ...
Checking for C header file stdlib.h... (cached) yes
Checking for C header file string.h... (cached) yes
Checking for C library libdl... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
Compiling log.c ...
Compiling main.c ...
clang -o lib1/test1.os -c -Wall -pedantic -std=c99 -g -fPIC -DDEBUG lib1/test1.c
clang -o lib1/libtest1.so -shared lib1/test1.os -ldl
clang -o lib2/test2.os -c -Wall -pedantic -std=c99 -g -fPIC -DDEBUG lib2/test2.c
clang -o lib2/libtest2.so -shared lib2/test2.os -ldl
Compiling xalloc.c ...
Linking prog ...
scons: done building targets.
这只是一个烤饼虫还是我做错了什么?在网上找不到关于它的更多信息,因此在此询问。:)


(我尝试过的显示上述行为的SCONS版本是v2.1.0和v2.3.4)

经过一些研究,我找到了答案,现在它正确地显示了它:

...
env["SHCCCOMSTR"]   = "SHCC $SOURCE"
env["SHLINKCOMSTR"] = "SHLINK $TARGET"
env["CCCOMSTR"]     = "CC   $SOURCE"
env["LINKCOMSTR"]   = "LINK $TARGET"
...
我想我以前试过这个,但它不起作用,但很明显,因为它现在起作用了,所以出了问题。因此,变更后的输出如下(如预期):

哦,嗯,烤饼似乎工作正常,事实上是石头

...
CC   log.c
CC   main.c
SHCC lib1/test1.c
SHLINK lib1/libtest1.so
SHCC lib2/test2.c
SHLINK lib2/libtest2.so
CC   util.c
CC   xalloc.c
LINK prog