- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个被多个项目使用的框架(其中包括几个示例来展示框架的工作原理)。该框架具有核心、图形、物理、图形用户界面等组件。每个组件都是一个单独的库。还有几种配置。
主解决方案文件使用所有可能的配置编译整个项目,以便项目可以使用这些库。由于框架很少被重新编译,尤其是那些从事使用该框架的项目的人(包括我),预编译许多头文件是有意义的。
最初我让每个项目/样本都有自己的预编译头文件用于整个项目。每次我都必须重建相同的 pch(例如,Debug),所以我决定共享 PCH 会减少冗余的 PCH 编译。到目前为止,一切都很好。我有一个编译 PCH 和库的项目。所有后续项目/示例现在都使用相同的 PCH。这非常有效。
唯一的问题是我看到文件大小增加了。这不是障碍,就好像使用该框架的项目打算发布一样,它可以将自己从共享 PCH 中分离出来并制作自己的。我这样做是为了快速开发(我实际上已经创建了一个工具,可以为准备构建的新项目/示例创建 VS 项目文件和源文件,并有助于升级以前使用旧版本的项目框架版本)。
无论如何,(我假设)文件大小的增加是因为创建共享 PCH 的独立 VS 项目文件包含所有库中的所有 header 。 我的问题是我是否可以使用条件编译 (#ifndef) 来减小最终可执行文件的大小?或者可能以某种方式共享多个 PCH 文件(据我所知,这是不可能的,但我可能是错的)如果我没有意义,请这样说(用客气话:))因为我对 PCH 文件的了解非常有限.
谢谢!
Note: To re-iterate and make it clear, so far, I have one solution file that is compiling all the libraries including the shared PCH. Now if I recompile all the samples and projects, they compile in a couple of seconds or more at most. Before, each project would recreate a PCH file. Also, initially I wanted a PCH for each library, but then I found out that a source file cannot use multiple PCH files, so this option was not feasible. Another option is to compile all possible combinations of PCH files, but that is too time consuming and cumbersome and error prone.
最佳答案
听起来大小问题是因为使用了您实际上不需要的 header ,但由于周转更快,在开发时使用这些 header 仍然有意义。
关于使用#ifndefs:预编译很粗糙。您无法在存在差异的地方共享预编译工作。如果使用 #ifndefs 对您包含的内容进行不同的变体,即如果你有
#ifndef FOO
然后预编译头必须在使用该预编译头的两个文件中 FOO 定义不同的点之前停止。所以#ifndef 不会解决问题。最终结果是 FOO 必须相同,否则您将返回到不同项目的单独 pch 文件。两者都不能解决问题。
至于共享多个 .pch 文件: .pch 文件的一个基本限制是每个 .obj 只能使用一个。当然 .pch 文件可以有任意组合的标题。你可以有一个 .pch 用于 core+graphics,一个 .pch 用于 core+physics,core+ai 等。如果没有源文件需要与超过 core+one 的模块“交谈”时间。这对我来说听起来不现实。这样的计划及其变体听起来像是没有实际 yield 的大量重组工作。您不想构建无数种组合并跟踪所有组合。这是可能的,但它不会为您节省时间。
在我看来,您通过牺牲可执行文件的大小以在开发/调试期间快速周转,然后以更慢但更精简的方式构建实际版本来做正确的事情。
关于c++ - 高效共享预编译头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128974/
我正在阅读哈德利的 Advanced R并尝试一些东西。我正在尝试创建一个 lazy闭包函数返回一个带有提供的函数 data.frame在其环境中以及使用 with并且能够在以后提供额外的函数参数。
我有两个 ViewController。初始 ViewController 是输入和存储 URL 的地方。此初始 ViewController 的 viewDidLoad 还应该在应用程序启动时开始加
你是怎么用的 对于应用程序中的 ListView 项也应该在设备 <11 上运行? 由于 activated_state 在 HC 之前不可用,我只能想到两个肮脏的解决方法: 在您的 Activit
我正在为 android (2.1 > 3.1) 编写一个应用程序,我想使用熟悉的做法,即在 Honeycomb 应用程序中使用应用程序图标来进入家庭 Activity ,但是,当我之前运行该 Act
如果搜索的键不存在,我如何覆盖方法 GET 或编写一个将在服务器端执行的新函数返回另一个键值? 示例: 如果关键字“word_1 word_2 word_3 word_4”不存在则搜索关键字“word
对于我的存储库,我使用的是 Git 和 Stash。在 Stash 端,我限制了(只读)对 master 的访问权限,因此任何用户都可以从 master 分支分支以获取功能/分支,但不能直接 merg
如何配置dgrid及其存储以定义渲染行时是否已经选择了行? 例如,如果我的行数据是这样的: { id: 1, name: 'Item Name', selected: true } 我当前
有没有一种方法可以将变量从一个 BeanShell 前/后处理器引用到另一个 BeanShell 处理器(它们在同一个线程组中)? 如果我在 HTTP 请求下的 BeanShell 预处理器中创建了一
问题 我已尝试添加预操作 shell 脚本,这些脚本会根据我正在构建的内容打开/关闭我的 .pch 文件中的某些定义。 但是,在运行构建时,没有任何反应。我不是一个流利的 shell 脚本编写者,所以
我有一个 HTML 字符串用作 jQuery 输入文档。 // the variable html contains the HTML code jQuery( html ).find( 'p' ).
在 Mercurial 中允许 merge 之前有没有办法进行一些检查? 通过将以下内容添加到 ~/.hg/hgrc,我找到了更新前 Hook ,并拥有一个在允许更新之前运行的脚本: [hooks]
总结: 预 Controller Hook 是否在缓存期间执行?是否有任何 Hook 点可以执行? (系统前?) 我应该强调一个事实,即 Hook 不会影响发送到浏览器的内容。这不是问题。 详细版:
我正在使用适用于 android 的 Skobbler Map API,到目前为止它一直非常好。按照官方的“操作方法”,我已经能够将 map 应用到我的应用程序中。比我可以让应用程序下载 map 并离
当我安装bcrypt时我的 hapi js 项目的模块尚未安装,它显示类似 node-pre-gyp install --fallback-to-build 我尝试通过运行来安装; npm i nod
我试图使用此代码的变体: apply plugin: 'java' apply plugin: 'idea' idea.workspace.iws.withXml { provider ->
假设我们有一个 PHP 项目,其依赖项 A 和 B 分别依赖于 PHP 库 X,但版本不同。 通常,人们会使用诸如 composer 之类的 PHP 依赖管理器,它可以通过在与 A 和 B 兼容的版本
这似乎违背了代码块的目的,但我希望能够在代码块中加粗。例如,如果我想将返回行加粗: int main(void) { **return 0;** } 最佳答案 您必须在 HTML 中执行此操作
我们是否应该使用 Huggingface(预)训练一个 BERT 无框模型的小写输入数据?我查看了 Thomas Wolf ( https://github.com/huggingface/trans
我有两个模式: 技能: var mongoose = require("mongoose"); var SkillSchema = new mongoose.Schema({ skill: {
我这里有问题。这适用于 Chrome,但我无法在 IE11 的 index.html 中使用任何动画。当它不想工作时,我会看到一个静态屏幕。同样在 IE 中,消息不会像它应该的那样消失。如果我将 di
我是一名优秀的程序员,十分优秀!