- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解 ~/.R/Makevars
中设置的宏/变量的作用和关系和 package_directory/src/Makevars
安装/构建自己的 R 包时。假设这些文件看起来像
~/.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
我们可以在构建 R 包时选择 C++ 的编译器,使用
CXXSTD
我们选择了标准和
CXXFLAGS
我们添加编译器标志。与
PKG_CPPFLAGS
我们为 C++ 预处理器和
CXX_STD
添加标志我们告诉我们我们的包使用 C++11。
CXX
有什么关系和 CXX98
, CXX11
和 CXX14
? CXX11STD = -std=c++11
的含义是什么?如果 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
没有直接关系。 ,因此如果认为合适,标签可能会被删除。
最佳答案
Makevars
文件,如 Writing R Extensions: 1.2.1 Using Makevars 中所指定, 是 Make
的变体这是 R 独有的。您列出的许多变量都称为 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
包装时如图
Writing R Extensions: Section 1.2.4 Using C++11 Code .这只是为了确保 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_*
上有一个简短的说明
Writing R Extensions: Section 5.5 Creating shared objects 中的选项.
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
,它提供了一个
Makevars
专门针对 Windows 环境的文件。
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/43597632/
如何在 Excel 中编写可以在我将打开的任何 Excel 文档上工作(使用快捷方式运行)的宏? 这可能吗? 最佳答案 您需要将宏添加到 Personal.xlsb 以使它们可用于所有 excel 文
我正在研究 problem #74在4clojure.com,我的解决方案如下: (defn FPS [s] (->> (map read-string (re-seq #"[0-9]+"
我还没有完全理解Clojure 箭头宏thread-first -> 和thread-last 宏->> 之间的区别。在阅读 https://clojure.org/guides/threading_
我想将一些调试输出语句插入到大型 C 代码库中。这些调试输出语句将由编译器选项开关控制。 调试输出语句如下所示: #ifdef DEBUG_FLAG Print(someSymbol) #endif
我正在通过宏将代码注入(inject)到 C++ 类中。有没有办法根据访问修饰符的上下文来做到这一点?有点像 #if (we_are_in_public_context) INJECT_PUBLIC_
这应该与 memoize 类似,但有很大不同。虽然 memoize 应该与纯函数一起使用,但它通常对加速 IO 相关函数很有用。 我正在寻找的函数/宏应该表现得像高阶函数。它产生的功能应该: 第一次调
对于下面的代码: let services: [MyServices] = [ MyService(), #if DEBUG DebugService(), #endi
假设我有以下文本文件 name: John Doe description: My name is John Doe and I'm really good at vim! name: John Do
在创建 Excel 宏方面需要帮助。我有一个 Excel 工作表。Excel 工作表不一致。我打算使它统一和结构化。 例如。 A B C
我正在 excel 中设置一个宏,以便在更新单元格时自动发送电子邮件。是否可以在电子邮件正文中包含单元格的内容?例如,如果单元格 G7 已更新,请在电子邮件中包含单元格 B7 的内容?单元格行将是相同
我创建了一个简单的 Excel 工作表。 这是我的宏代码: Sub MyMacro() Sheets("Sheet1").Select A$ = Cells(1, 1) Msg
在 Excel 的 VB 宏中,如何删除所有出现的以某个字符串开头的单词? 例如: 字符串内容为:xxxx $AUD543.43 yyyy 我想搜索以 $AUD 开头的字符串中的任何内容并删除下一个空
我是 Excel 宏的新手.. 谁能告诉我这个宏是做什么的? Sub People_Add_Document() prow = ActiveCell.row num = Cells(p
我对 Excel 中的 VBA 和宏非常陌生。我有一个非常大的 Excel 电子表格,其中 A 列保存日期。我正在尝试删除值小于某个日期的行,这就是我到现在为止的想法。 Sub DELETEDATE(
我在 Excel 2003 中有一个 VBA 对象,当通过流数据获得某些值时,它会触发三个简单的宏。它运行良好。我想打开一个重复的工作表,但具有不同的流数据,并在各自的工作表上触发宏。它现在可以使用,
下面的宏有什么问题?我只想评估一个选项卡中的一个单元格是否大于另一个选项卡中的另一个单元格。然后消息框: Sub Comhouse() If Worksheets("(2.2) TRA works
需要一个简单的 excel 宏的帮助。我在第 1 列 X1 到 X20 中有数据。我想自动将此信息粘贴到 A 列,然后当我更新 X 列中的数字时,我想将此信息粘贴到 B 列,然后再粘贴到 C 列...
我找到了以下代码,效果很好;但是,我必须手动更改月份,以便它转到第二个工作簿的右侧工作表。由于工作表以月为单位,我怎样才能使其自动更改为当月? Sub AlarmSheet() Dim wkb As
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我的公司只使用 MS Office 2003 产品,所以我必须坚持下去。由于我的工作性质,我需要使用很多“复制和粘贴”功能。源数据主要来自网站,我将数据粘贴到 Excel 中的单元格中。问题是剪贴板保
我是一名优秀的程序员,十分优秀!