【发布时间】:2016-12-30 19:07:28
【问题描述】:
我在两台机器上使用 RStudio,具有相同的配置,甚至是相同的 .Rproj 文件(来自 Dropbox)。
增量重建
默认情况下,RStudio 执行包的增量重建。 C++ 文件仅在它们更改或任何头文件更改时才会重新编译。这为增量开发提供了快速周转。
在一台机器上,如果我修改一个简单的 .R 文件,或者即使我根本没有修改任何文件,然后选择 Build & Reload,那么 C++ 会执行不重新编译。
然而,另一方面,我得到:
没有更改文件:
==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))
Updating quanteda documentation
Loading quanteda
'/Library/Frameworks/R.framework/Resources/bin/R' CMD INSTALL '/Users/kbenoit/Dropbox (Personal)/GitHub/quanteda' --library='/var/folders/46/zfn6gwj15d3_n6dhyy1cvwc00000gp/T//RtmpowXjeu/devtools_install_cd475c156859' --no-R --no-data --no-help --no-demo --no-inst --no-docs --no-exec --no-multiarch --no-test-load --preclean
Re-compiling quanteda
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I. -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include" -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/RcppParallel/include" -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/RcppArmadillo/include" -fPIC -Wall -mtune=core2 -g -O2 -c RcppExports.cpp -o RcppExports.o
等
更改了一个 .R 文件:
(这是一个没有实际功能的数据文档R文件)
==> Rcpp::compileAttributes()
* Updated src/RcppExports.cpp
* Updated R/RcppExports.R
==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))
Updating quanteda documentation
Loading quanteda
'/Library/Frameworks/R.framework/Resources/bin/R' CMD INSTALL '/Users/kbenoit/Dropbox (Personal)/GitHub/quanteda' --library='/var/folders/46/zfn6gwj15d3_n6dhyy1cvwc00000gp/T//RtmpLaNxr4/devtools_install_cdef692abc82' --no-R --no-data --no-help --no-demo --no-inst --no-docs --no-exec --no-multiarch --no-test-load --preclean
Re-compiling quanteda
问题:我怎样才能让第二台机器在必要时只进行增量构建,这是假定的默认行为?
更新:
在克隆到非 Dropbox 本地存储库并在两台计算机上构建后,我已验证这不是 Dropbox 造成的。
-
按照@DirkEddelbuettel 的建议,即使在
李>Makevars中使用ccache,问题也没有消失(尽管出于其他原因,这是一个好主意,所以我现在正在使用它)。 如果我在 Build Tools 窗格的 Roxygen 选项 框中取消选中 Build and Reload,问题确实 会消失项目选项:
【问题讨论】:
-
好更新。我以前被这个咬过(但提到了我的解决方法)。我也倾向于设置“Build & Reload”标志,特别是对于我使用 roxygen2 文档的包。我从不让 roxygen 接触到DESCRIPTION、NAMESPACE、...或任何其他东西。这些都不能解释构建问题。也许是 roxygen 弄乱了时间戳?