Scons -u选项不起作用?

时间:2015-08-24 03:09:19

标签: scons build-system

似乎-u对我不起作用(我正在使用scons-2.3.6)。

为简化上下文,您可以想象我的项目结构,如

+root
    +project
        - bar.vcxproj (generated vs project)
    -SConstruct
    -bar.c

在SConstruct内部,我输入的代码如下:

env_base = Environment()
...
env_base.StaticLibrary(target = 'bar', source = ['bar.c'])
...

如果我在 root 文件夹中执行命令“scons”,一切都会完美无缺。

但是如果我在项目文件夹中执行命令“scons -u”,scons可以在根文件夹中找到我的SConstruct,但是没有文件被编译。

BTW:我在项目文件夹中执行“scons -u”的原因是因为我想将生成的vsproj放在 projet 文件夹中并使用BuildCommandLine进行编译该项目。

我想我没有正确使用“-u”,对我的情况会有什么优雅的解决方案?

第1次编辑:

正如bdbaddog所说,我把SConstruct放在了这里:

def BuildConfig(env, config):
    env.Append(CCFLAGS = '/W 4')
    env.Append(CCFLAGS = '/WX')

    if config == "debug":
        env.Append(CCFLAGS = '/DEBUG')
        #env.Append(CCFLAGS = '-Zi /Fd${TARGET}.pdb')
        env.Append(CCFLAGS = '/Z7')
    elif config == "release":
        pass

env_base = Environment()
lib = env_base.StaticLibrary(target = 'bar', source = ['bar.c'])

opts=Variables()
opts.Add('target', 'Compile Target (debug/release).', "debug")
# there is more in my project....
opts.Update(env_base) # update environment

# here I want to use my own command to build the project, so it can support different build option that is defined by me.
env_base['MSVSBUILDCOM'] = "scons -u target=$(Configuration)"

target = env_base["target"]
BuildConfig(env_base, env_base['target'])

env_base.MSVSProject(target = "project\\bar" + env_base['MSVSPROJECTSUFFIX'],
            srcs = ["..\\bar.c"],
            incs = [],
            localincs = "",
            resources = "",
            misc = "",
            buildtarget = lib,
            variant = ['debug'],
            auto_build_solution=0)

1 个答案:

答案 0 :(得分:1)

SCons默认只在当前目录下构建文件。

如果您只想在某个目录中构建文件(其中有规则可以在那里构建目标),您可以按如下方式调用SCons:

scons the_target_directory_I_want_to_build

虽然这可能导致该目录中的目标源也被构建。