![](/img/trans.png)
[英]How do I see the (default) page size for Microsoft Windows 10?
[英]How do I see and replicate the R default Makevars configuration?
我没有~/.R/Makevars
文件,
> tools::makevars_user()
character(0)
> tools::makevars_site()
character(0)
但是, R
必须从某处读取配置,因为软件包src
子目录中包含Rcpp
导出的.cpp
文件可以Rcpp
编译。
我有兴趣知道如何在src
目录中编写Makefile.win
,以便Rcpp
文件与TMB
.cpp
文件一起继续编译。 当前一个makefile像:
all: fn1.dll fn2.dll
fn1.dll: fn1.cpp
Rscript --vanilla -e "TMB::compile('fn1.cpp')"
fn2.dll: fn2.cpp
Rscript --vanilla -e "TMB::compile('fn2.cpp')"
clean:
rm -rf *o
可以很好地编译TMB
文件,并且实际上由以下建议: https : //github.com/kaskr/adcomp/issues/43
我试图修改makefile
德克建议这里 ,但没有运气复制R
的默认行为,即使有一个全新的测试包。
我的会话信息:
> sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
我仍然不知道如何使用Makevars
来做我想要的事情,本质上是:
make
通过在Rstudio(Windows 7)中Build and Reload
包所有Rcpp
导出文件。 在Rcpp::compileAttributes()
,这调用Rcpp::compileAttributes()
然后继续运行其他程序包构建命令。 Build and Reload
make
另一个make
,除了现在它读取仅编译TMB
代码的Makefile
。 但是,我确实有一种解决方法。 本质上, R扩展手册指出:
可以使用以下`src / install.libs.R'文件复制接近默认行为的文件:
...
由于编译TMB
.cpp
文件的代码只是R
命令,因此很容易将它们集成到这样的文件中:
# replicate default R
files <- Sys.glob(paste("*", SHLIB_EXT, sep=''))
libarch <- if (nzchar(R_ARCH)) paste('libs', R_ARCH, sep='') else 'libs'
dest <- file.path(R_PACKAGE_DIR, libarch)
dir.create(dest, recursive = TRUE, showWarnings = FALSE)
file.copy(files, dest, overwrite = TRUE)
# now do TMB files
cpp_files <- list.files('./TMB/', full.names = T, pattern = '*.cpp')
for (f in cpp_files) {
TMB::compile(f)
}
files <- Sys.glob(paste("./TMB/*", SHLIB_EXT, sep=''))
libarch <- if (nzchar(R_ARCH)) paste('libs', R_ARCH, sep='') else 'libs'
dest <- file.path(R_PACKAGE_DIR, libarch)
dir.create(dest, recursive = TRUE, showWarnings = FALSE)
file.copy(files, dest, overwrite = TRUE)
该文件读取并编译存储在子目录<pkgdir>/src/TMB
中的所有TMP
类型.cpp
文件,然后将<pkgdir>/src/
和<pkgdir>/src/TMB
所有后续.dll
复制到软件包的安装目录。
注意,当TMB文件存储在子目录中时,使用Makevars
进行编译是可能的,但可能非常困难 。 Dirk在matrix软件包中推荐了该示例,但是我没有运气在那里修改代码以执行我想要的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.