Scons -u 选项不起作用?
Scons -u option doesn't work?
似乎 -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",一切正常。
但是如果我在 project 文件夹中执行命令 "scons -u",scons 可以在根文件夹中找到我的 SConstruct,但没有文件被编译。
顺便说一句:我之所以在 project 文件夹中执行 "scons -u" 是因为我想将生成的 vsproj 放在 projet 文件夹并使用 BuildCommandLine 编译项目。
我想我没有正确使用“-u”,对于我的情况,什么是优雅的解决方案?
第一次编辑:
正如 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)
SCons默认只在当前目录下构建文件。
如果您只想在某个目录中构建文件(那里有构建目标的规则),您可以按如下方式调用 SCons:
scons the_target_directory_I_want_to_build
虽然这可能会导致该目录中的目标源也被构建。
似乎 -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",一切正常。
但是如果我在 project 文件夹中执行命令 "scons -u",scons 可以在根文件夹中找到我的 SConstruct,但没有文件被编译。
顺便说一句:我之所以在 project 文件夹中执行 "scons -u" 是因为我想将生成的 vsproj 放在 projet 文件夹并使用 BuildCommandLine 编译项目。
我想我没有正确使用“-u”,对于我的情况,什么是优雅的解决方案?
第一次编辑:
正如 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)
SCons默认只在当前目录下构建文件。
如果您只想在某个目录中构建文件(那里有构建目标的规则),您可以按如下方式调用 SCons:
scons the_target_directory_I_want_to_build
虽然这可能会导致该目录中的目标源也被构建。