当前位置: 首页 > 知识库问答 >
问题:

Rcpp包的发布版本

郜杰
2023-03-14

我想为一个使用Rcpp的R包创建一个发布版本,但是当我查看g参数时,我发现即使我的Makevars文件中有一个-O3标志,Rcpp也会在最后用一个-O0标志覆盖它,例如,我将其视为输出

g-std=gnu 11-我"/usr/share/R/包含"-DNDEBUG-我"/home/dz5937/R/x86_64-pc-linux-gnu-库/3.6/Rcpp/包含"-我"/home/dz5937/R/x86_64-pc-linux-gnu-库/3.6/RcppEigen/包含"-O3-std=c 14-fpic-g-O2-fdebug-prefix-map=/build/r-base-jbaK_j/r-base-3.6.3=.-fstack-保护者-强-Wform-Werr=formate-Security-Wdate-time-D_FORTIFY_SOURCE=2-g-UNDEBUG-Wall-peate-g-O0-cbtsatr.cpp-o btsat. o

我如何让Rcpp进行发布构建,即比-O0更高的优化级别?

这是我的Makevars文件中的内容

PKG_CXXFLAGS = -O3 -std=c++14

共有1个答案

韦德厚
2023-03-14

这在以前就出现过,但是你“不能”缺少本地的一次性编辑你的马克瓦尔。

因此,简短的回答(这里我将使用Debian/Ubuntu系统上的路径,它有一个方便的快捷方式/etc/R,作为R自己的etc/目录的软链接):

edd@rob:~$ grep -- '-g' /etc/R/Makeconf | grep -v "^#"
CFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXXFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX11FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX14FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX17FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
CXX20FLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO)
FCFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong $(LTO_FC)
FFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong $(LTO_FC)
SAFE_FFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-8T8CYO/r-base-4.0.3=. -fstack-protector-strong -msse2 -mfpmath=sse
TCLTK_LIBS = -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -L/usr/lib/x86_64-linux-gnu -ltk8.6 -lX11 -lXss -lXext
edd@rob:~$ 

这(实质上)是三个来源的结合:

  • R自身硬连线的东西
  • gcc和朋友硬连线的东西
  • 包维护者(实际上是我)为发行版指定的东西

所有这些都会设置您的CXXFLAGS(对于CXX11…CXX14……)也是如此。然后你可以设置

  • 您的用户本地值通过~/. R/Makevars
  • 您的包-本地值通过src/Makevars

真正奇怪的是,即使在将近25年之后,我们仍然没有机制来编辑和覆盖它,并有选择地撤销。我想我记得,对于gcc等,最右边的值获胜。。。

总之,为了“确定”,您必须在机器本地配置文件中编辑掉-O0值。

 类似资料:
  • 版本号 采用三位版本号,分别是主版本号、次版本号、修订版本号。例如 5.1.2。 参见: http://semver.org/lang/zh-CN/。 主版本号:主版本号内的所有版本必须相互兼容;与其它主版本号不一定完全兼容,尽量向下兼容。 次版本号:代表新特性增强。版本号越大特性越丰富。 修订版本号:代表BugFix版本。只做bug修复使用,版本号越大越稳定。 版本维护 最多同时维护两个版本。

  • 我有一个奇怪的问题,我的调试版本工作正常,但是在签署并生成一个应用程序包后,我将其上传到Play商店,该应用程序立即崩溃(我在具有我的应用程序的商店版本的手机上运行LogCat,我看到它与AndroidX ConstraintLayout有关,但无法复制它)。我认为和版本之间有一些区别,所以我开始调试我的发布版本。 当我这样做时,Android Studio无法安装APK,出现以下错误: 安装失败

  • 本页介绍了 MOSN 的 版本发布步骤。 MOSN 版本发布步骤 一、冻结代码 在准备一个版本发布期间,停止代码往 master 分支的合并 二、整理 Release notes 基于 Github 的 PullRequest 记录,整理本次发布的内容与上一个版本之间的差异,需要注意仅统计目标分支是 master 且正常合并的 PullRequest 首先记录原始的信息,统一记录在 MOSN Re

  • 以下版本的发布文件包含在 npm 和 CDN 中。github 做为源码管理仓库,不包含发布文件。 版本 兼容性 错误提示 DevTool 组件反解 语法压缩 san.js san.min.js san.dev.js san.modern.js san.modern.min.js san.modern.dev.js san.spa.js san.spa.min.js san.spa.dev.js

  • 稳定化是让一个发布分支进入发布状态的过程;也就是决定哪些变更将会进入发布版本,并以此为根据修整分支的内容。 “决定”一词有许多潜在的不幸。在协作软件项目中最后一分钟特性冲击是非常常见的现象:当开发者看到软件发布将要发生,他们便混乱的结束当前的变更,不希望错过这班船。当然,这是在发布时你最不想看到的场面。如果人们能在比较以舒适的节奏,无需担心变更是进入这个版本还是下一个版本时完成这个特性,效果会更好

  • 在maven 3.5.2中,如果依赖项的版本设置为发布或最新,则会显示以下警告: [警告]'依赖项。附属国。“版本” 如果pom的父版本设置为例如,则不会发出此警告: 这是故意的吗,这样我们就可以安全地继续依赖父pom的发布版本? 我们的用例是,我们为大约100个租户托管一个服务,这些租户需要一组公共配置文件和一些依赖关系管理等。这种公共配置在我们的“基本”pom中定义,每个租户的pom将其用作父