jjzjj

c++ - 通过使用特定于平台的项目文件或使用项目生成器来构建自动化?

有些构建系统能够生成特定于平台的项目文件,例如VisualStudiosln、vcproj、vcxproj文件或XCodexcodeprojOSX下的项目。其中之一是CMake,但我发现对此的支持非常有限,存在错误,并且很难将其更新为较新的版本(如VS2010)。此外,至少CMake缺少对VisualStudio属性页的支持,这使得管理和更改项目范围的配置变得更加困难——例如为所有项目启用/禁用代码分析。上述问题的解决方法是为每个平台手动创建项目文件-在我的例子中只有两个,但即使有更多,数量也不应该那么大。将特定于平台的构建命令调用到通用构建自动化脚本中非常容易。例如,我使用waf(P

c++ - 如何让 scons 将 Clang 与 libc++ 一起使用?

如何让scons将Clang与libc++一起使用?将“-stdlib=libc++”放入我传递给环境的任何标志中会导致undefinedreference错误,如下所示:hello.o:Infunction`main':hello.cpp:(.text+0xc):undefinedreferenceto`std::__1::cout'hello.o:Infunction`std::__1::basic_ostream>&std::__1::endl>(std::__1::basic_ostream>&)': 最佳答案 选择libc

c++ - 如何设置 scons 输出完整的扩展命令行?

我遇到过一个使用scons的构建系统。完全不熟悉scons本身是一个相当复杂的框架,我对无法调试构建问题感到非常沮丧。我希望scons打印出正在调用的完全扩展的命令行(正如您在大多数构建系统中看到的那样)我发现您可以使用--debug=presub选项但(至少在OSX上)它是无用的,因为它打印未扩展变量的值例如:Buildingbuild/obj/ios-uni-rel-sta-clang/common/libs/boost/libs/date_time/src/gregorian/date_generators.i386.owithaction:$SHCXX-o$TARGET-c$S

c++ - 如何确定请求了哪个编译器

我的项目使用SCons来管理构建过程。我想支持多个编译器,所以我决定使用AddOption,这样用户就可以在命令行上指定要使用的编译器(默认为他们当前的编译器是什么)。AddOption('--compiler',dest='compiler',type='string',action='store',default=DefaultEnvironment()['CXX'],help='Nameofthecompilertouse.')我希望能够为各种编译器提供内置编译器设置(包括特定编译器的最大警告级别等内容)。这是我目前第一次尝试的解决方案:ifis_compiler('g++'):

c++ - 如何使用 scons 2.3 visual express 2012 构建 C++ 项目?

我尝试:env=Environment(ENV={'PATH':os.environ['PATH'],\'INCLUDE':'c:\\ProgramFiles(x86)\\MicrosoftVisualStudio11.0\\VC\\include\\',\'LIB':'c:\\ProgramFiles(x86)\\MicrosoftVisualStudio11.0\\VC\\lib\\'})但它不起作用。错误信息:“cl”不是命令...我在sconswiki(http://www.scons.org/wiki/PlatformSpecificNotes#Visual_C.2B-.2B

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++ - 如何管理不断增长的 C++ 项目

我想知道我应该如何管理一个不断增长的C++项目。现在,我正在使用Netbeans开发一个项目,生成makefile是一项肮脏的工作。这个项目变得太大了,我决定把它分成几个部分。这样做的最佳方法是什么?我正在尝试使用Scons作为我的构建系统。我已经取得了一些成功,但我是否应该在每次追加或删除文件时编辑构建脚本。太沉闷了。所以我需要你的建议。附言顺便说一句,像googlechrome这样的大型项目是怎么做到的呢?每个人都使用某种IDE来构建仅为软件分发而生成的脚本吗? 最佳答案 我还使用NetbeansforC++并使用SCons进行

c++ - 使用相似规则构建多个可执行文件

我正在写something就像C++的交互式教程。本教程将由两部分组成:一个被编译成一个库(我正在使用Scons构建它),另一个(类(class))随教程一起提供,由最终用户编译。我目前正在寻找一种方便人们构建这些类(class)的好方法。基本上,第二部分是一个包含所有类(class)的目录,每个类(class)都在自己的目录中。每节课至少会有一个lesson.cpp和一个main.cpp文件,可能还有其他的文件,具体有没有我不知道已发货——最终用户将创建这些。它看起来像这样:all_lessons/helloworld/lesson.cppmain.cppeven_or_odd/le

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