scon可移植和更干净的方式来调试和发布构建

2024-09-30 10:27:03 发布

您现在位置:Python中文网/ 问答频道 /正文

SConstruct:实现此文件以使用生成库进行调试和发布生成。在

variant_dir设置为debug build的build/debug &为发布版本设置为生成/发布(amp;S)

import os
env = Environment()

releaseEnv = env.Clone(CCFLAGS = ['-O3'])
debugEnv   = env.Clone(CCFLAGS = ['-O0', '-g'])

debugDirPath   = os.path.join('build', 'debug')      # build/debug
releaseDirPath = os.path.join('build', 'release')  # build/release

if os.name == 'nt':
    releaseEnv.Replace(CCFLAGS = ['EHsc'])
    # windows specific flags
    debugEnv.Replace(CCFLAGS = ['EHsc', 'Zi', 'MTd'])

SConscript(dirs = 'src', name = 'SConscript', exports = {'env' : releaseEnv}, variant_dir = releaseDirPath, duplicate = 0)
SConscript(dirs = 'src', name = 'SConscript', exports = {'env': debugEnv}, variant_dir = debugDirPath, duplicate = 0)

SConscript:(位于包含a1.cpp和b1.cpp的源目录中)

^{pr2}$

目录结构如下:

^{3}$

1)从根目录运行scons会生成以下警告,尽管是警告消息build is stop,但不会创建库。在

scon:*为同一目标指定了两个具有不同操作的环境:/home/xyz/temp/src/多功能操作系统 文件“/home/xyz/temp/src/SConscript”,第7行,中

This issue has been resolved after using src_list = Glob('*.cpp');

2)为调试和发布构建创建环境对象的正确(可移植)方法是什么? 我的方法是正确的吗?在

请建议必要的更改以避免警告并成功运行构建。在


Tags: 文件namedebugbuildsrcenv警告os
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:03

您的问题与构建变量无关,而是您有两个同名的目标(SharedLibrary和{}都是buildsum)这两个目标。在

要解决这个问题,要么给其中一个取另一个名称,要么至少给其中一个添加一个扩展名。如果添加扩展,如果希望保持跨平台兼容性,则可能需要检查操作系统。在

相关问题 更多 >

    热门问题