草庐IT

build-process

全部标签

c++ - 标准应该在源代码中指定还是在 CPPFLAGS 中指定?

#define_BSD_SOURCE还是设置CPPFLAGS=-D_BSD_SOURCE更好?在我看来,如果一段源代码依赖于特定标准,最好在代码本身中使用#define明确说明。但是,很多评论建议在编译行上指定标准更为合适。从源代码中省略标准并仅在编译时指定它有什么优点? 最佳答案 如果您在源代码中指定定义,则存在相同的头文件可能包含在多个源文件(翻译单元)中但具有不同的预处理器定义的风险,这可能导致违反单一定义规则,这通常是一种痛苦调试。通过为整个项目而不是在单个源文件中指定定义,可以最大限度地减少违反单一定义规则的可能性。此外,

c++ - 为嵌入式 C/C++ 项目构建系统

我正在寻找可以帮助我将嵌入式C项目组织成“模块”和“组件”的高级构建系统/工具。请注意,这两个术语非常主观,因此我的定义如下。模块是c和h文件的内聚集合,但只有一个公共(public)h文件对其他模块可见。另一方面,组件(或层)是模块的集合(例如应用层、库层、驱动层、RTOS层等)。构建系统/工具应该——防止组件和模块之间的循环依赖(模块内部的循环依赖是可以的)防止访问模块的私有(private)屏障。如果其他模块试图包含模块私有(private)的头文件,则构建系统必须抛出错误。但是,私有(private)屏障内的文件必须能够包含该屏障内的其他文件。支持在主机上自动构建和执行单元测试

c++ - 我如何分析完整的 C++ 构建?

我正在WindowsXP上用C++开发一个应用程序,使用Eclipse作为我的IDE,以及一个基于Makefile的构建系统(使用自定义工具来生成Makefile)。此外,我正在使用LZZ,它允许我编写一个文件,然后将其拆分为一个头文件和一个实现文件。我正在使用TDM的GCC4端口。我可以使用哪些工具或技术来准确确定构建过程的每个部分需要多少时间,以及为什么它很慢?特别感兴趣的是:make需要多少时间来解析Makefile、找出依赖关系、检查时间戳等?Eclipse在构建前后需要多少时间?GCC在解析系统和提升header上花费了多少时间?P.S.:这是我的家庭项目,所以昂贵的工具对我

c++ - Visual Studio 错误 : LNK1104: cannot open file 'kernel32.lib' - only in WP8 projects/Win32 builds

我最近遇到了这个问题(几天前一切正常):VisualStudio2012开始拒绝构建原生WP8项目。今天,我从模板“WindowsPhoneDirect3D应用程序(仅限native)”创建了新解决方案,以检查WP是否正确支持我新创建的DLL。我尝试编译这个项目,首先没有任何更改或额外的引用-VS生成的纯代码。但是,它因给定错误而失败。我很清楚这是什么意思,可能的原因是什么,但是我不明白,在这种情况下它是从哪里来的。奇怪的事情:这只发生在“Win32”配置中,ARM编译正常:1>------Buildstarted:Project:PhoneDirect3DApp,Configurat

c++ - 从 Gradle 迁移到 CMake for C++ 项目

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion我们去年一直在为我们的C++项目使用Gradle,但随着项目复杂性的增加以及我们对库的使用/创建的增加,我发现自己在处理我对Gradle的了解不足的情况。网络上充满了对Gradle有用的资源,但它非常专注于Java。此外,我还没有看到很多C++项目使用Gradle。出于这些原因,我正在考虑转向CMake,因为我现在需要大量编辑构建脚本。迁移到CMake,一个更具战斗力的测试和无处不在的C/

C++14 元编程 : Automagically build a list of types at compile/init time

使用C++14和CuriouslyRecurringTemplatePattern(CRTP)以及可能的Boost.Hana的某种组合(或boost::mpl如果您愿意),我可以在编译时(或静态初始化时)构建一个类型列表而无需显式声明吗?例如,我有这样的东西(在Coliru上查看):#include#include#includenamespace{structD1{staticconstexprautoval=10;};structD2{staticconstexprautoval=20;};structD3{staticconstexprautoval=30;};}intmain(

自建K8S一年多没用,忽然想使用下。kubelet启动失败,报错:main process exited, code=exited, status=255/n/a

通过systemstatuskubelet查看报错,基本没有什么有效信息,所以使用journalctl-xefukubelet就可以看到以下报错:Jan1620:49:17masterkubelet[3824]:I011620:49:17.402577  3824server.go:425]Version:v1.15.0Jan1620:49:17masterkubelet[3824]:I011620:49:17.402770  3824plugins.go:103]Nocloudproviderspecified.Jan1620:49:17masterkubelet[3824]:I011620

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

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

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part III

用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartIII用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartI_松下J27的博客-CSDN博客用CmakebuildOpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0)PartII_松下J27的博客-CSDN博客      前面已经知道了如何在opencv.sln的项目中查看源码,现在看看怎么在自己创建的项目中调用opencv的库,并在debug的模式下查看源码

c++ - 智能指针是否排除了两阶段 build 的需要?

两阶段build采用以下形式:structsomething{something():p1(NULL),p2(NULL){}~something(){if(p1)deletep1;if(p2)deletep2;}voidinitialize(){p1=newint(2);p2=newint(5);//Maythrowifallocationfails!}int*p1;int*p2;};要点在于,天真的构造函数(不监视分配失败)会泄漏内存:永远不会调用部分构造的对象的析构函数。我的问题:下面的代码是否安全,并且由此推论,智能指针是否避免了两阶段构造?structsomething{som