- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图了解在安装/构建自己的R包时在~/.R/Makevars
和package_directory/src/Makevars
中设置的宏/变量的作用和关系。假设这些文件看起来像
〜/ .R / Makevars
CXX = g++
CXXSTD = -std=c++11
CXXFLAGS = -fsanitize=undefined,address -fno-omit-frame-pointer
CXX98 = g++
CXX98STD = -std=c++98
CXX11 = g++
CXX11STD = -std=c++11
CXX14 = g++
CXX14STD = -std=c++14
PKG_CPPFLAGS = -I../inst/include
CXX_STD = CXX11
CXX
选择用于C++的编译器,使用
CXXSTD
选择标准,使用
CXXFLAGS
添加编译器标志。使用
PKG_CPPFLAGS
,我们为C++预处理器添加标志;使用
CXX_STD
,我们告诉我们的软件包使用C++ 11。
CXX
和CXX98
,CXX11
和CXX14
之间是什么关系? CXX11STD = -std=c++11
是什么意思?是在选择-std=c++11
和-std=gnu++11
之间吗?出于可移植性原因,通常应避免使用-std=gnu++11
吗? CXXSTD
和CXXFLAGS
的标志不仅仅添加到CXX
中,这样前三行会减少为CXX = g++ -std=c++11 -fsanitize=undefined,address -fno-omit-frame-pointer
。显式指定CXXSTD
和CXXFLAGS
有什么好处? CXX_STD = CXX11
如何工作?这里的CXX11
与CXX11
中的~/.R/Makevars
有什么关系? CXXFLAGS
和PKG_CXXFLAGS
(我的示例中未包括)之间是什么关系? Rcpp
标签,因为我想这些问题的答案与
Rcpp
的用户最相关,但是我知道这可能与
Rcpp
没有直接关系,因此,如果认为合适,则可以将其删除。
最佳答案
Writing R Extensions: 1.2.1 Using Makevars中指定的Makevars
文件是R特有的 Make
的变体。您列出的许多变量都称为implicit variables。含义为:
Implicit rules tell make how to use customary techniques so that you do not have to specify them in detail when you want to use them.
CC Program for compiling C programs; default ‘cc’.
CXX Program for compiling C++ programs; default ‘g++’.
CPP Program for running the C preprocessor, with results to standard output; default ‘$(CC) -E’.
FC Program for compiling or preprocessing Fortran and Ratfor programs; default ‘f77’.
CFLAGS Extra flags to give to the C compiler.
CXXFLAGS Extra flags to give to the C++ compiler.
CPPFLAGS Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
FFLAGS Extra flags to give to the Fortran compiler.
LDFLAGS Extra flags to give to compilers when they are supposed to invoke the linker, ‘ld’, such as -L. Libraries (-lfoo) should be added to the LDLIBS variable instead.
LDLIBS Library flags or names given to compilers when they are supposed to invoke the linker, ‘ld’. LOADLIBES is a deprecated (but still supported) alternative to LDLIBS. Non-library linker flags, such as -L, should go in the LDFLAGS variable.
CXX98 CXX98STD CXX98FLAGS CXX98PICFLAGS
CXX11 CXX11STD CXX11FLAGS CXX11PICFLAGS
CXX14 CXX14STD CXX14FLAGS CXX14PICFLAGS
CXX17 CXX17STD CXX17FLAGS CXX17PICFLAGS
What is the relationship between
CXX
andCXX98
,CXX11
andCXX14
?
CXX
是要使用的常规编译器选项。同时,R根据检测到的编译标准定义了要使用的其他
CXX
选项。也就是说,如果
-std=c++98
设置了
CXX98
(
CXX_STD
语言规范),那么将使用与
CXX98
关联的编译器。同样,对于
CXX11
和
CXX14
,遵循相同的逻辑。有关更多详细信息,请参见
Rcpp Gallery: Using Rcpp with C++11, C++14 and C++17。
What is the meaning of, e.g.,
CXX11STD = -std=c++11
if C++11 is already implied? Is it between choosing-std=c++11
and-std=gnu++11
? Should-std=gnu++11
generally be avoided for portability reasons?
CXX11STD
的含义是确定C++ 11编译的适当语言标准。该选项之所以存在,仅是因为如果R的选择适当的C++ 11编译选项的版本对于编译器不正确,则可以对其进行更改。之所以存在这个原因,是因为每个编译器定义的C++ 11支持都可能与
R Installation and Administration: 2.7.2 C++ Support中所示的支持稍有不同:
It may be [Footnote 13] that there is no suitable flag for C++11 support, in which case a different compiler could be selected for CXX11 and its corresponding flags.
This is true for earlier versions of g++ such as 4.2.1, and also for commonly-used versions of the Solaris compiler CC.
-std=c++11
,因为大多数编译器都支持此声明。
Could the flags for
CXXSTD
andCXXFLAGS
not just be added toCXX
, such that the first three lines reduce toCXX = g++ -std=c++11 -fsanitize=undefined,address -fno-omit-frame-pointer
. What is the advantage in explicitly specifyingCXXSTD
andCXXFLAGS
?
CXX = g++ -std=c++11 -fsanitize=undefined,address -fno-omit-frame-pointer
CXX = g++
CXX11STD = -std=c++11
CXXFLAGS = -fsanitize=undefined,address -fno-omit-frame-pointer
CXX_STD
而不是
CXXSTD
。这仅仅是为了确保R将软件包注册为需要C++ xy。另一种方法是在
DESCRIPTION
文件中写入属性
SystemRequirements: C++xy
,其中
xy
表示年份。
How does
CXX_STD
=CXX11
work? How isCXX11
here related toCXX11
in ~/.R/Makevars?
CXX11
设置的C++ 11编译器完成。通过指定
CXX11
,您将指定一个
variable in Make
,它将用于编译配方下的文件:
$(OBJCXX) $(ALL_CPPFLAGS) $(ALL_OBJCXXFLAGS) -c $< -o $@
$(OBJCXX)
是
CXX
,
$(ALL_CPPFLAGS)
由
$(R_XTRA_CPPFLAGS) $(PKG_CPPFLAGS) $(CLINK_CPPFLAGS) $(CPPFLAGS)
给出,而
$(ALL_OBJCXXFLAGS)
具有
$(PKG_OBJCXXFLAGS) $(CXXPICFLAGS) $(SHLIB_CXXFLAGS) $(OBJCXXFLAGS)
。
/R/Makeconf.in
。但是,例程可能是
/m4/R
。
What is the relationship between
CXXFLAGS
andPKG_CXXFLAGS
(not included in my example)?
Makevars
中的写入顺序是不同的。特别是,我们有
CXXFLAGS
placed after PKG_CXXFLAGS
。
总是使用最右边的选项。 因此,
CXXFLAGS
优先于
PKG_CXXFLAGS
。
PKG_*
选项的简短说明。
Is it correct that variables defined in
~/.R/Makevars
apply globally to the installation of all packages, while variables in/src/Makevars
only apply to the present package?
~/.R/Makevars
中的变量将适用于所有软件包,而每个软件包随附的
/src/Makevars
仅会影响该软件包的设置。
/src/Makevars
中的值将优先于
~/.R/Makevars
。
/src/Makevars.win
,它提供了专门针对Windows环境的
Makevars
文件。
Is the compilation standard used for a packages nowadays only set via
CXX_STD
and not any more byPKG_CXXFLAGS
as shown in gallery.rcpp.org/articles/simple-lambda-func-c++11?
CXX_STD
仅在程序包环境中可用。同时,与其名称
PKG_CXXFLAGS
相反,它会影响所有编译选项。因此,引用上述Rcpp画廊文章时,您正在观察正在运行的独立脚本。要快速进入正确模式,需要设置
PKG_CXXFLAGS
而不是
CXX_STD
定义。
PKG_CXXFLAGS
的使用有点老套了。实际上,R 3.4中的首选方法是设置环境变量
USE_CXX11 = "yes"
。在R 3.1和R 3.3之间,标准是设置环境变量
USE_CXX1X = "yes"
。在这些实例之前,首选使用
PKG_CXXFLAGS ="-std=c++11"
。 (在Windows上除外,需要
PKG_CXXFLAGS ="-std=c++0x"
。)
Does using
CXX_STD=CXX11
then mean to use all the settings given byCXX
,CXXSTD
,CXXFLAGS
andCXX11PICFLAGS
?
CXX11 CXX11STD CXX11FLAGS CXX11PICFLAGS
关于r - 了解R中Makevars文件的内容(宏,变量,〜/.R/Makevars和pkg/src/Makevars),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59269899/
我正在尝试使用 jquery 获取图像 src,如下所示: HTML Javascript var imageSrc = $('.post_container img').attr('s
我遇到错误,无法完成构建。我搜索了 Stackoverflow 和 Github。我已经尝试了很多方法,但我无法修复。请帮忙。 (1) 在 [src/nullnull/debug, src/debug
我正在尝试使用图像制作一款类似 Match3 的游戏,但我无法进行比较。我正在为固定数量的 atm 执行此操作,只是为了让它正常工作,稍后应该在 foreach 循环中。如果有什么区别的话,该函数位于
我正在使用 jquery 插件 OwlCarousel,在我的一个 View 中使用 ng-repeat 场景,如下所示: 它运行良好,并为轮播中的每个项目输出以下标记: 有没
我的代码如下所示: Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.image1); int wi
如果未找到 src,我将使用 Angular 指令作为后备 url 作为名称首字母 指令 (function () { 'use strict'; angular .m
我是构建 chrome 扩展的新手,从一个小项目开始,我需要在弹出窗口中打印“构建版本”。构建版本被附加到 JS/CSS 资源中,如下所示: 需要从脚本 src 值中提取“6.0”。你能帮我看看如何
类型‘AbstractControl’上不存在属性‘Controls’。
这个tutorial演示如何使用指令 ngSrc 而不是 src : 他们要求: Replace the ng-src directive with a pl
我正在创建一个包含多个图像的图库,您可以在其中单击一个小缩略图,然后将打开该图像的更大版本。 打开后,如果您移动光标,图像将在 y 轴上跟随您。类似于 https://www.zara.com/es/
文档[] src.charAt src.length 这三样东西是什么? 我确定 pixState 会给我 1 或 0; var pixState = document[imgName].src.ch
问题背景: 我正在使用这个问题的解决方案:How to update AngularJS view when the value has not changed?所以在我看来我有: 当我更改照片时
我在 html 中有整个页面,在输出之前我想将所有 img src 替换为 data-src我正在使用 return (preg_replace('~]*\K(?=src)~i','data-',
Difference(s): android:src and tools:src? 如果有的话,什么时候使用 tools:src 而不是 android:src 是合适的? 最佳答案 如果您在运行时在
我需要检查每个 script 标签的 src 值,如果匹配,我想更改该脚本标签的 src 属性...像这样: var scripts = document.getElementsByTagName("
使用 img 标签的 data-src 或 src 属性有什么区别和后果(好的和坏的)?我可以使用两者获得相同的结果吗?如果是这样,应该什么时候使用它们? 最佳答案 属性 src 和 data-src
我使用 Vue。我尝试输出图像,当我使用 src 时效果很好,但当我使用 :src 时效果不佳。 作品 不起作用 我试过但没有用 @ 在路径的第一个。 ~ 路径中的第一个。 ./ 在路径的第一个。
在当前项目中我正在使用 jQuery。我只是想知道为什么会这样, $('#homeIcon').hover(function(){ document.getElementById('homeI
我在严格的 Java 环境中。 所以这个问题并不像标题中那么简单,我不是要解决我遇到的问题,它更理论化,以获得更好的知识。 我感兴趣的是用双引号或单引号匹配 src,但如果是双引号,它也必须用双引号结
我有一个 Joomla 2.5.28,现在使用 https 而不是 http。 一些文章(很多)包含来自 Vimeo 的嵌入视频。 最初,这些视频是使用http嵌入的,所以现在我的数据库中有字段int
我是一名优秀的程序员,十分优秀!