2015-08-24 25 views
1

似乎-u不適合我(我正在使用scons-2.3.6)。Scons -u選項不起作用?

爲了簡化的背景下,你能想象我的項目結構是怎樣的,

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

裏面SConstruct,我已經把這樣的代碼:

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

如果我執行在根命令 「scons的」文件夾,一切正常。

但是,如果我在項目文件夾中執行命令「scons -u」,scons可以在根文件夾中找到我的SConstruct,但沒有文件被編譯。

BTW:原因我在項目文件夾執行「scons的-u」,是因爲我希望把生成的vsproj在文件夾並使用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) 
+0

我不明白你的BTW ..你想做什麼?你可以將邏輯粘貼到你的SConstruct中生成vsproj嗎? – bdbaddog

+0

@bdbaddog我發佈了可以重現我的問題的SConstruct。 –

+0

你真的打算從scons內調用scons嗎?如果是這樣,你最好確保你改變第二次調用sconsignfile名稱.. env_base ['MSVSBUILDCOM'] =「scons -u target = $(配置)」 – bdbaddog

回答

1

SCons的默認情況下只建立在當前目錄下的文件。

如果你想只建立在某個目錄的文件(其中有是建立有目標的規則),你可以調用SCons的如下:

scons的the_target_directory_I_want_to_build

雖然這可能會導致該目錄中的目標來源也將被構建。

+1

我已經綁定了「scons C:\ root」,並且得到這個錯誤: scons:***沒有找到SConstruct文件 文件「C:\ Python27 \ scons-2.3.6 \ SCons \ Script \ Main。 py「,920行,在_main –

+1

嘗試:scons -uc:\ root – bdbaddog