【发布时间】:2008-11-13 01:25:38
【问题描述】:
背景
我正在通过设置一个包含两个子项目的基本 C++ 示例项目来试用 Scons:
- Prj1 是一个依赖于 Prj2 的 EXE
- Prj2 是一个导出一些函数的 DLL
可以看到我的SConstruct和SConscript文件here的目录结构和内容@
问题
我遇到的问题是,为了从命令行构建这些目标,我必须同时指定它们的构建目录的相对路径和特定于平台的文件扩展名。
例如,要构建 Prj1,我必须这样做:
build> scons ../bin/project1.exe
同样,要构建 Prj2,我必须这样做:
build> scons ../bin/project2.dll
问题
如何在不指定相对路径和平台特定文件扩展名的情况下让 SCons 构建这些项目?
期望:
build> scons project1
build> scons project2
可能的解决方案
- 使用别名 - 我很确定这 是 我想要的,但显然我搞砸了。我尝试了以下方法但没有成功:
prj1_env.Alias( 'project1', PROG)
prj1_env.Alias( 'project1', os.path.join( BIN_DIR, PROG) )
参考文献
【问题讨论】:
-
如果我记得另一个问题 PROG 上没有 .exe。尝试在第二种情况下添加它。
-
没错,PROG 上没有.exe。但是,这是 Program 函数有意并推荐的,因为添加扩展是特定于平台的,因此不支持跨平台工作。我知道我可以进行平台检测,但 SCons 可以为您完成。