似乎-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)
我不明白你的BTW ..你想做什麼?你可以將邏輯粘貼到你的SConstruct中生成vsproj嗎? – bdbaddog
@bdbaddog我發佈了可以重現我的問題的SConstruct。 –
你真的打算從scons內調用scons嗎?如果是這樣,你最好確保你改變第二次調用sconsignfile名稱.. env_base ['MSVSBUILDCOM'] =「scons -u target = $(配置)」 – bdbaddog