我正在尝试在Ubuntu 10.x上构建jsoncpp - 但是'指令'有时是模糊的.例如,在构建lib之前,不清楚scons.py文件需要驻留在哪个文件夹中.
有人可以概述构建jsoncpp库所需的步骤吗?在Linux上,或者如果没有这个,如果有人知道有这个信息的任何在线资源,请分享链接.
brew install mongodb
==> Downloading http://downloads.mongodb.org/src/mongodb-src-r2.4.8.tar.gz
Already downloaded: /Library/Caches/Homebrew/mongodb-2.4.8.tar.gz
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching
patching file src/third_party/v8/SConscript
patching file src/third_party/v8/src/spaces.h
==> scons install --prefix=/usr/local/Cellar/mongodb/2.4.8 -j4 --64 --cc=/usr/bin/clang --cxx=/usr/bin/clang++ -stdlib=libstdc++
Run Code Online (Sandbox Code Playgroud)
无限期挂起(10分钟+).
以下是流程:
PID TTY TIME CMD
428 ttys000 0:00.14 -bash
439 ttys001 0:00.14 -bash
425 ttys002 0:00.20 -bash
2472 ttys002 0:00.12 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0 /usr/local/Library/brew.rb inst
2491 ttys002 0:00.17 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0 -I /usr/local/Library/Homebrew
2517 ttys002 0:08.25 python /usr/local/bin/scons install --prefix=/usr/local/Cellar/mongodb/2.4.8 -j4 --64 --cc=/usr/bin/cla
2583 ttys002 0:00.02 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -stdlib= …Run Code Online (Sandbox Code Playgroud) 使用SCons的每个项目似乎都在重新发明轮子.我很乐意采用某些目录布局和/或变体构建(调试/发布)和/或测试框架和/或最佳实践的解决方案.
即使是一些不太简单的例子也会有所帮助.
我正在使用SCons构建项目,需要通过env.Install添加一个符号链接到它正在安装的文件.什么命令会产生一个相当于ln -s在命令行上运行的链接?
所以我在这里阅读了有关分层构建的问题,例如:使用SCons创建分层构建
我想做两个独立的回购的真正的分层构造,它们都使用我设置为使用mercurial的子回购的scons.下面是说明我想要做什么的文件布局.
期望的布局:
project_root/ (new project that builds bar app using the libfoo built from source)
libfoo_subrepo/ (standalone project repo from bitbucket)
src/
SConscript
libfoo.c
libfoo.h
test/
SConscript
test_foo.c
SConstruct
barapp_subrepo/ (standalone project repo from bitbucket that uses libfoo)
src/
SConscript
bar.c
bar.h
test/
SConscript
test_bar.c
SConstruct
test/
SConscript
test_bar_with_foo.c
SConstruct
Run Code Online (Sandbox Code Playgroud)
所以我有两个单独的回购,都使用scons.第一个是libfoo,可以单独克隆并使用scons构建.当在libfoo根目录中运行scons时,它在src /中构建一个libfoo的静态库,并在test /中构建一个单元测试可执行文件,链接到src /中的静态库.
第二个回购有依赖libfoo的酒吧应用程序.它也可以单独克隆,如果在构建系统上安装了libfoo,它可以使用scons构建.
我想要做的是设置一个新的repo(project_root),它使用mercurial将libfoo和bar app repos设置为subrepos.所以当你克隆这个新的repo时,它会自动拉下bar app和它的依赖,libfoo.然后我希望能够在这个新的repo的根目录中运行scons并让它在libfoo_subrepo/root中执行scons来构建libfoo并进行单元测试.然后我希望它在barapp_subrepo/root中运行scons来构建栏并告诉它链接libfoo_subrepo/src /中的libfoo静态库.最后,我希望它在测试中构建一些新的单元测试/使用libfoo静态库和bar app中的源文件来组合测试bar app和libfoo.
据我所知,从阅读scons文档可以看出,我需要为"subrepo"创建一个自定义Builder,它将在子shell中运行scons.然后我可以将libfoo.subrepo和barapp.subrepo添加到project_root /目录以及一些方法,以便当构建器执行命令构建libfoo.subrepo时,它将源名称转换为它执行scons的路径.
building 'libfoo.subrepo' translates into executing 'cd libfoo_subrepo; scons'
Run Code Online (Sandbox Code Playgroud)
在我看来,scons无法递归地构建独立的scons项目.我读过的所有内容都假定您能够在子文件夹中创建SConscript文件,然后让根SConstruct文件依赖于SConscript文件.请告诉我有办法用scons做我想做的事.我不想回去做.
谢谢.
我正在尝试在Windows上构建zxing的C++端口,但是scons失败了:
cl : Command line error D8021 : invalid numeric argument '/Wextra'
Run Code Online (Sandbox Code Playgroud)
我安装了VS2010和MinGW,并且scons尝试使用MSVC编译器,即使SConscript文件假定gcc并使用gcc特定的参数,这会导致错误.
我如何告诉scons使用MinGW?
我在以下问题上需要一些建议:
我有一个QT项目,目前设置为与qmake很好地配合.但是,由于项目的要求和未来方向的扩展,我需要更改它的构建系统,因为应用程序将需要对其构建方式进行一些更改.
现在每个源文件都被编译成一个非常大的可执行文件,这是打包(手动)并发送到下载区域.一切都很好.
但我的目标是以一种方式模块化应用程序,即每个"功能"将被编译成共享库,用户(开发人员)将能够选择他想要编译的组件.这些"功能"放在源代码树的目录中(例如:query_builder,reverse_engineer,mysql_DB_support,version_managemen目录等等),当用户构建应用程序时,他只是告诉构建系统使用查询构建器编译应用程序和mysql,但没有反向工程师,在这种情况下,构建系统从指定的目录添加源文件并从中创建一个lib.
我还有其他要求,例如:
经过一些"市场调查"后,我最终将CMake和SCons作为我可能使用的两种可能的系统.我有一些CMake经验和一些python经验,但还没有SCons.
但我不知道哪一个最适合我的情况,这是我需要你帮助的地方.你能详细说明我应该使用哪一款?如果您认为我的要求可以通过qmake实现,请告诉我,
干杯,f.
我需要在 scons 脚本中导入 python3 脚本。(我使用 scons v3.0.1.7)
有没有办法用 python 3 执行 scons ?
官方 scons 网站说
这将是第一个支持早于 2.7 和 3.5+ 的 Python 版本的版本
scons -python /usr/bin/python3选择 python 解释器之类的东西会很好。
我也没有找到如何为 python3 构建 scons 版本。
我参与了面向Windows和Linux(RHEL)平台的C++项目.到目前为止,开发完全是在Visual Studio 2008上完成的.对于Linux编译,我们使用第三方Visual Studio插件,它读取VS解决方案/ perojects文件并在Linux机器上远程编译.
最近决定放弃第三方插件.
现在我最关心的是构建系统.我正在寻找跨平台构建工具.这样我就不需要维护两组构建文件(例如Windows的vcproj/solution和Linux的make文件).
我找到了以下候选人:a.Scons b.cmake的
您如何看待跨平台开发的工具?
令我困扰的另一点是Visual Studio(+ Visual Assist)在没有vcproj文件的情况下会丢失很多功能 - 你如何处理这些工具的问题?
谢谢迪马
PS 1:我喜欢Scons的一点是它(a)使用python,因此它很灵活,而cmake使用适当的语言(我知道它不是构建系统的赢家特征)(b)自包含(不需要)像在cmake上一样在Linux上生成makefile.
那么为什么不是Scons?为什么在你的项目中决定使用cmake?
我一直在使用cmake从源代码构建我的项目,这非常方便,因为您避免使用不必要的文件污染源目录.
假设CMakeLists.txt在当前目录中,可以按如下方式完成:
mkdir build
cd build
cmake ..
make
Run Code Online (Sandbox Code Playgroud)
我怎样才能在scons中做同样的事情?