草庐IT

python - 为什么 SCons VariantDir() 不将输出放在给定目录中?

我正在考虑使用SCons对于一个新项目。它看起来非常好,虽然我发现VariantDir很困惑。我有一个简单的项目,在一个目录中有一些C源文件,我想在“正常”和“配置文件”模式下构建——使用两组不同的gcc选项。我希望输出分别进入normal/和profile/目录。为了测试,我缩减为只有一个源文件t.c,其中有一个main()。我的SConstruct文件位于同一目录中,如下所示:normal=DefaultEnvironment(tools=['mingw'],CCFLAGS='-O2')normal.VariantDir('release','.',duplicate=0)norm

python - 强制 scons 使用旧的编译器?

我有一个使用boost的C++项目。整个项目是使用scons+VisualStudio2008构建的。我们已经安装了VisualStudio2010,结果发现scons试图使用更新的编译器而不是旧的编译器-并且未能将项目构建为boost和visualstudio2010don非常喜欢对方——还没有。我们想抑制这一点并强制scons使用2008版本。这可能吗?我们如何做到这一点? 最佳答案 您可以通过选择来修改sconsEnvironment()你想要的版本:env=环境(MSVC_VERSION=)来自scons联机帮助页:MSVC

c++ - 将 SCons 设置为 Autolint

我正在使用谷歌的cpplint.py验证我项目中的源代码是否符合GoogleC++StyleGuide中规定的标准.我们使用SCons来构建,所以我想通过让SCons首先读取我们所有的.h和.cc文件然后在它们上运行cpplint.py来自动化这个过程,只有在它通过时才构建一个文件。问题如下:在SCons中,如何预先Hook构建过程?在通过linting之前,不应编译任何文件。cpplint不返回退出代码。如何在SCons中运行命令并检查结果是否与正则表达式匹配?I.E.,我如何获得正在输出的文本?项目很大,无论#1和#2的解决方案是什么,当将-j选项传递给SCons时,它都应该同时运

python - 如何让 scons 调用外部脚本?

我正在尝试使用scons构建latex文档。特别是,我想让scons调用一个python程序,该程序生成一个文件,其中包含一个表,该表是\input{}到主文档中。我查看了scons文档,但我并不清楚我需要做什么。我希望实现的基本上就是您使用此makefile所获得的:document.pdf:table.texpdflatexdocument.textable.tex:pythontable_generator.py我如何在scons中表达它? 最佳答案 沿着这些路线应该做的事情-env.Command('document.tex

python - 如何使用scons进行交叉构建

我正在尝试创建最简单的SConstruct文件来交叉编译程序。我尝试了不同的设置,最新的SConstruct文件在这里:env_options={"CC":"arm-linux-gnueabihf-gcc","CXX":"arm-linux-gnueabihf-g++","LD":"arm-linux-gnueabihf-ld","AR":"arm-linux-gnueabihf-ar","STRIP":"arm-linux-gnueabihf-strip"}env=Environment(**env_options)path=['/path/to/toolchain/bin/']en

c++ - 如何设置 scons 系统包含路径

使用scons我可以轻松设置我的包含路径:env.Append(CPPPATH=['foo'])这通过了标志-Ifoo到海合会但是,我尝试在启用了很多警告的情况下进行编译。特别是env.Append(CPPFLAGS=['-Werror','-Wall','-Wextra'])在某些boost包含时会死得很惨……我可以通过将boost包含添加到系统包含路径而不是包含路径来解决这个问题,因为gcc对待系统包含的方式不同。所以我需要传递给gcc而不是-Ifoo是-isystemfoo我想我可以使用CPPFLAGS变量来做到这一点,但我想知道scons中是否有更好的解决方案。

c++ - 为什么scons下clang不显示颜色输出?

使用Scons构建时,我可以将其配置为使用clang,如下所示:env["CXX"]="clang++"但是,它似乎没有保留clang输出的颜色信息。如何让scons保持颜色? 最佳答案 根据clangdocumentation,颜色仅在检测到具有颜色功能的终端时启用。SCons不会自动将所有环境变量传递给运行编译器的进程,您已明确传递它们。而且TERM不会传递给clang。将以下内容添加到您的SConstruct中,颜色应该会再次起作用:importosenv['ENV']['TERM']=os.environ['TERM']

mongodb - 卡在 Mavericks OSX 10.9 brew install 上安装 MongoDB 在 scons 线上挂起

brewinstallmongodb==>Downloadinghttp://downloads.mongodb.org/src/mongodb-src-r2.4.8.tar.gzAlreadydownloaded:/Library/Caches/Homebrew/mongodb-2.4.8.tar.gz==>Downloadingpatches########################################################################100.0%############################################

python - 使用 SCons 进行真正的分层构建?

所以我在这里阅读了有关分层构建的问题,例如:CreatingaHierarchicalBuildwithSCons我想对两个独立的存储库进行真正的分层构造,它们都使用我使用mercurial设置为子存储库的scons。下面是说明我想要做什么的文件布局。所需的布局:project_root/(newprojectthatbuildsbarappusingthelibfoobuiltfromsource)libfoo_subrepo/(standaloneprojectrepofrombitbucket)src/SConscriptlibfoo.clibfoo.htest/SConscri

c++ - 如何让项目将其构建输出与 Scons 放在同一目录中?

背景我正在通过设置一个包含两个子项目的基本C++示例项目来尝试Scons:Prj1是一个依赖于Prj2的EXEPrj2是一个导出部分函数的DLL我遇到的问题是该库将其.obj、.pdb、.lib、.dll等文件构建在与其SConscript文件相同的目录中,而EXE将其文件构建在与SConscript文件相同的目录中它的士兵。应用程序成功地构建了Prj2依赖项和自身。但是,您无法运行生成的EXE,因为它在其他目录中找不到所需的库。问题如何让多个具有依赖关系的项目将其二进制文件和调试信息输出到一个公共(public)目录中,以便它们可以执行和调试?可能的解决方案这是我目前想到的:我尝试使