标签: precompiled-headers

如何将预编译的头文件添加到ios项目中?

我正在寻找创建预编译的头文件,以避免在项目的每个头中包含相同的调试和跟踪库.

我创建了一个名为-Prefix.pch的文件:

#ifdef __OBJC__
#import "Blah.h"
#import "Blarg.h"
#endif
Run Code Online (Sandbox Code Playgroud)

并将其添加到项目中.还有什么我应该做的,或者现在应该做些什么(假设我做了一个项目干净并重新编译)?

precompiled-headers ios

17
推荐指数
1
解决办法
8891
查看次数

如何在Android NDK项目中使用预编译头文件?

我是从移植大C++项目Visual StudioGCC为Android.由于文件数量很多,编译时间是冰冷的.我想设置一个预编译的头文件,但我发现GCC文档令人困惑.

我有一个stdafx.h文件应该是预编译头的基础,这是所有.cpp源中的第一个包含文件.有人知道我需要添加什么Android.mk来使这项工作?

android gcc precompiled-headers android-ndk

16
推荐指数
1
解决办法
6486
查看次数

在Visual Studio中"创建预编译头"(/ Yc)和"使用预编译头"(/ Yu)之间有什么区别?

我阅读了MSDN中的文档,但最后我并没有清楚地知道它们之间的实际区别是什么.两者似乎都要求在每个*.cpp文件的顶部添加stdafx.h.

我正在使用VS2008.

任何人都可以帮忙清理一下吗?

c++ precompiled-headers compiler-options visual-studio-2008 visual-studio

16
推荐指数
2
解决办法
5251
查看次数

Visual C++预编译标头错误

更新:

在我的头文件中包含stdafx.h有什么影响?


我开始使用Linux/Eclipse CDT中的C++项目并将其导入Visual C++/Windows.

在Visual C++中,我开始使用预编译头来加速编译,并定义了stdafx.cpp和stdafx.h.

这是我的stdafx.h

#pragma once

#include <string>
#include <vector>
#include <map>
...
Run Code Online (Sandbox Code Playgroud)

和我的stdafx.cpp

#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)

在每个.h和.cpp文件中,我有以下内容:

#pragma once //if in a header file
#include "stdafx.h"
Run Code Online (Sandbox Code Playgroud)

对于发布和调试,我都有"创建预编译头(/ Yc)".它在调试模式下编译良好,但在发布模式下它保持报告

error LNK2005: ___@@_PchSym_@00@UfhvihUaszlaDUwlxfnvmghUnnlUhixUnnlPeDUnnlPeDUivovzhvUvmgrgbOlyq@ already defined in A.obj
Run Code Online (Sandbox Code Playgroud)

如果我同时切换到"使用预编译头",我会进入Debug和Release

fatal error C1854: cannot overwrite information formed during creation of the precompiled header in object file:
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?

c++ header precompiled-headers visual-studio visual-c++

15
推荐指数
2
解决办法
1万
查看次数

GCC构建时间不会从预编译头中获益

我有一个庞大的项目,大约有150,000个LOC的C++代码.建设时间约为15分钟.该项目由许多不同规模的子项目组成.

我为每个子项目构建了单独的预编译头,但是当我使用它们时,构建时间保持大致相同.似乎构建时间减少了5-10%,而不是更多.

绝对使用预编译的头文件,我使用-Winvalid-pch选项,我尝试使用编译-H器选项进行编译,我的预编译头文件在输出中出现'bang'符号,​​这意味着编译器能够使用预编译头文件.

我所有预编译的头文件都不是很大,每个文件大约有50Mb.我使用python脚本,在这里生成最常用的预编译头文件列表,所以我的预编译候选列表非常好.

是否有用于构建优化的免费/开源工具?标准make实用程序似乎无法测量不同目标的构建时间.我无法找到获取不同目标统计数据的方法make.我不是在谈论依赖性分析或者先进的东西.我只是想知道大部分时间浪费在哪些目标上.

此外,GCC似乎在处理预编译头文件方面效率很低.我无法让任何子项目构建速度明显更快,我得到的最大加速比例是20%,对于一个需要三分钟构建的项目.使用固态硬盘购买速度更快的机器似乎比使用GCC优化Linux上的构建时间更容易和更便宜.

c++ gcc build-process gnu-make precompiled-headers

15
推荐指数
2
解决办法
2927
查看次数

在头文件或源文件中包含stdafx.h?

我有一个名为stdafx.h的头文件,当然这个是预编译的.我已经读过我应该将这些文件包含到我的.cpp文件中,但是随后会出现一些这样的语句.

我应该将stdafx添加到我的标题或我的cpp中吗?我认为将它放入标题是一种好习惯,但我似乎不得不把它放入标题中.

例:

stdafx包含freeglut.
我的类头文件的属性为GLenum.

我应该将stdafx包含在班级的.h中吗?

c++ header-files precompiled-headers stdafx.h visual-studio

14
推荐指数
2
解决办法
2万
查看次数

头文件中的预编译头

我今天第一次遇到了预编译的标题.在改变我的生活之前.我无法相信编译我的C++代码可能会那么快.它现在很有意义..

无论如何,让我感到困惑的一件事是,从我到目前为止所读到的,预编译的头文件只应添加到源文件(cpp?).

在Visual Studio中,Project Properties-> C/C++ - > Advanced下有一个选项可以"强制包含文件".我将该编译器选项设置为stdafx.h.

这样做之后......我不再需要包含我添加到stdafx.h中的头文件,甚至包括我的头文件(源文件应该自动包含stdafx.h).这是预期的行为吗?

我找不到头文件/源文件之间区别的地方.

如果确实如此...但我担心这是VC++让你逃脱的另一个因素,但会在GCC中破裂.是的..它需要便携; 至少在GCC和VC++之间.

c++ gcc precompiled-headers visual-studio visual-c++

14
推荐指数
2
解决办法
9968
查看次数

使用boost库时加快编译/链接时间

我正在使用Boost Program Options,用它来编译非常小的C++代码需要相当长的时间(10秒甚至更长).在没有boost库的情况下编译代码需要1秒钟.

知道如何使用boost库来增加编译/链接时间吗?它是跨平台的,所以我需要用Mac OS X/Linux/PC编译代码.

c++ compiler-construction boost precompiled-headers

13
推荐指数
1
解决办法
7876
查看次数

使用大型预编译头文件时cc1plus.exe崩溃

我在使用MinGW预编译头文件时遇到问题.编译器似乎找到了预编译的头文件,但cc1plus.exe在cc1plus.exe停止工作后立即崩溃.

我知道这可能与cc1plus.exe的低堆栈大小有关,所以我做了以下操作来增加它:

editbin cc1plus.exe /STACK 33554432
Run Code Online (Sandbox Code Playgroud)

我也试着无济于事:

editbin cc1plus.exe /STACK 32768k
Run Code Online (Sandbox Code Playgroud)

然而,这并没有解决它,因为每当我尝试编译我的应用程序时它仍然会崩溃.

顺便说一下,如果重要的话,我正在使用最新的MinGw(gcc v 4.6.2)和最新的Eclipse CDT.

我是否正确增加了cc1plus.exe的堆栈大小?有没有人有任何线索如何继续,因为我阅读了无数的文章和主题,但我现在有点想法.

g ++似乎找到并接受我的预编译头文件:

Building file: ../src/AdvancedOgreFramework.cpp
Invoking: GCC C++ Compiler
g++ -DHAVE_W32API_H -DNO_GCC_PRAGMA -I"C:\DevelopmentTools\workspaces\workspace_cpp
\MyGame\inc" -I"C:\docs\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\falagard" -I"C:\docs 
\ogre3d\CEGUI\CEGUI-0.7.6\cegui\include\RendererModules\Ogre" -I"C:\docs\ogre3d\CEGUI
\CEGUI-0.7.6\cegui\include" -I"C:\docs\ogre3d\ogre1.8.0_mingw_sdk\OgreSDK_MinGW_v1-8-0
\include" -O0 -g3 -H -Wall -c -Winvalid-pch -MMD -MP -MF"src/AdvancedOgreFramework.d" 
-MT"src/AdvancedOgreFramework.d" -o "src/AdvancedOgreFramework.o" "../src 
/AdvancedOgreFramework.cpp"
! C:\DevelopmentTools\workspaces\workspace_cpp\MyGame\inc/Precompiled.h.gch
Run Code Online (Sandbox Code Playgroud)

这是我作为预构建make运行的makefile,用于生成我的.gch:

C_FLAGS = -O0 -g3 -Wall -c -MMD -MP
INC_PATH = -IC:/docs/ogre3d/ogre1.8.0_mingw_sdk/OgreSDK_MinGW_v1-8-0/include -IC:/docs
/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui/include -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-
mingw/cegui/include/RendererModules/Ogre -IC:/docs/ogre3d/CEGUI/CEGUI-0.7.6-mingw/cegui
/include/falagard


all: Precompiled.h.gch

@echo 'Finished precompiling headers....'

Precompiled.h.gch: Precompiled.h …
Run Code Online (Sandbox Code Playgroud)

mingw precompiled-headers stack-size

12
推荐指数
1
解决办法
5526
查看次数

Visual Studio 2022 版本 17.6 中的预编译标头错误

我有一个 Visual Studio C++ 项目,最近将 Visual Studio 2022 从版本 17.5 更新到版本 17.6 后,编译从一开始就停止并出现错误:

1>------ Rebuild All started: Project: MRPch, Configuration: Debug x64 ------
1>Scanning sources for module dependencies...
1>std.compat.ixx
1>std.ixx
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\modules\std.compat.ixx : fatal  error C1083: Cannot open include file: 'MRPch.h': No such file or directory
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\modules\std.ixx : fatal  error C1083: Cannot open include file: 'MRPch.h': No such file or directory
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(486,5): warning MSB8074: Cannot read Module Dependencies file C:\Work\MeshInspector\source\TempOutput\MRPch\x64\Debug\std.ixx.module.json: Expecting element …
Run Code Online (Sandbox Code Playgroud)

compiler-errors precompiled-headers visual-c++ visual-studio-2022

12
推荐指数
1
解决办法
2147
查看次数