草庐IT

c++ - 使用 SCons 定义 C++ 预处理器宏

我正在尝试在Scons中定义预处理器宏以构建更大的C/C++项目。我正在使用的库之一需要定义ALIGN。更具体地说,如果我添加#defineALIGN(x)__attribute((aligned(x)))到所述库的头文件,编译正常。但是,我应该能够在构建时指定它,因为这是库打算使用的方式。我知道在CMake中,我可以使用类似的东西来定义宏SET(ALIGN_DECL"__attribute__((aligned(x)))")像这样在Scons中定义常量myEnv.Append(CPPDEFINES=['IAMADEFINEDCONSTANT'])工作正常,但以这种方式定义一个宏是行不

c++ - scons - 编译后运行程序

我想在编译后直接运行构建的程序,这样我就可以用scons构建和启动我的程序。我认为这个SConstruct-File会在程序重建时启动它。main=Program("main",["main.cc"])test=Command(None,None,"./main>testoutput")Depends(test,main)每次我运行scons都会启动它main=Program("main",["main.cc"])test=Command(None,None,"./main>testoutput")Requires(test,main)但两者都不行,我的程序从未执行过。我做错了什么?

c++ 编译 std::thread 示例与 scons

我无法让scons正确编译一个小型线程示例(在Linux上)。如果我运行scons,它会这样做:jarrett@jarrett-laptop:~/projects/c++_threads$sconsscons:ReadingSConscriptfiles...scons:donereadingSConscriptfiles.scons:Buildingtargets...g++-obuild/main.o-c-std=c++11-pthread-Wall-gsrc/main.cppg++-obuild/c++threadsbuild/main.oscons:donebuildingta

c++ - SCons 将编译后的程序复制到父目录

我试图在编译后自动将生成的程序文件复制到父目录。我试过了,但是不行。env.Program("program_name",["file1.cc","file2.cc"])Copy("../program_name","program_name")我如何使用SCons做到这一点? 最佳答案 更好的方法是使用目标和Command()构建器,如下所示:prgTarget=env.Program("program_name",["file1.cc","file2.cc"])Command(target="../program_name",s

c++ - 使用 scons,如何链接到预建库?

我最近开始使用scons构建几个小型跨平台项目。其中一个项目需要链接到预先构建的静态库……这是怎么做到的?在make中,我只是在Windows上附加“link/LIBPATH:whereverlibstxxl.lib”,在unix上附加“stxxl.a”。 最佳答案 只是为了记录答案,因为我自己已经找到了。Program('foo',['foo.cpp'],LIBS=['foo'],LIBPATH='.')添加LIBS和LIBPATH参数将正确的参数添加到构建命令行。更多信息here.

c++ - 使用 scons 管理版本的最佳实践?

我希望我的Qt/C++应用程序知道它是哪个版本。它应该知道不是来自一些配置文件,而是编译成应用程序二进制文件的版本号。版本本身就是像“X.Y.Z”这样的字符串,其中X是主版本号,Y是次版本号,Z是SVN下的修订版(或者SVN下的修订号减去版本号“X.Y.0”出来时的修订号)).您认为使用scons实现此目的的最简单方法是什么? 最佳答案 SCons具有用于生成文件的Substfile和Textfile构建器。因此,创建一个函数来计算版本(使用pysvn或通过调用svn命令)并使用Substfile(从文件中获取模板)将其输出写入文件

c++ - 如何告诉 scons 使用 C++11 标准

我没找到如何告诉scons接受c++11标准:SConstruct文件:env=Environment(CPPPATH='/usr/include/boost/',CPPDEFINES=[],LIBS=[],SCONS_CXX_STANDARD="c++11")env.Program('Hello',Glob('src/*.cpp'))cpp文件:#includeclassA{};intmain(){std::cout调用scons时的错误信息:scons:ReadingSConscriptfiles...scons:donereadingSConscriptfiles.scons:B

python - SCons- *** 未找到 SConstruct 文件

使用安装的SCons#cdscons-2.3.0#pythonsetup.py安装安装后,当我尝试运行scons时,出现以下错误。scons:*未找到SConstruct文件。_main中的文件“/usr/local/lib/scons-2.3.0/SCons/Script/Main.py”,第905行如何克服这个问题??? 最佳答案 使用SCons时有3种方式指定SConstruct文件,如下:从项目的根目录执行scons,这里应该有一个SConstruct文件。这是最标准的方式。在项目的子目录中,根目录下应该有一个SConsct

java - SCons 的替代品是什么?

我有C++、Java和Python的项目。C++中的项目导出SWIG接口(interface),以便Java和Python项目可以使用它们。我的问题是:我可以使用什么构建机制来管理依赖项并构建这些项目?我用过SCons和GYP。它们相当易于使用并允许插件(代码生成器、编译器、加壳器)。我想知道是否有替代方案,特别是对C++、Java和Python的原生支持。我在Linux平台上开发,但我也希望能够在mac和win平台上构建。 最佳答案 CMake我在我的项目中使用并喜欢它。还有Rake(Ruby自带,但可以用于任何事情),我对此评价

python - SCons 生成可变数量的目标

我正在尝试让SCons生成多个目标(直接在SConscript中未知数量)。我有这样的目录:headers/Header1.hHeader2.hHeader3.hHeader4.hmeta/headers_list.txt现在我希望SConscript读取headers_list.txt,根据其内容从headers/目录中选择文件(即它可能只包含Header1和Header3),对于我想使用某些函数生成源代码的每一个。我一直在尝试使用env.Command来做到这一点,但问题是它需要调用者指定目标列表,由于显而易见的原因,在调用env.Command时不知道该列表。我唯一能想到的就是运