Rcpp 和 C++ 对 gdal、sqlite3 和 boost 的依赖
Rcpp and C++ dependencies to gdal, sqlite3 and boost
我正在努力使非程序员更容易使用混合 C++/python/R 项目。
我正在考虑使用 Rcpp 包装 C++ 代码以使其在 R 包中可用并希望向最终用户隐藏一些复杂性的可能性。
这个问题旨在了解它实际上更容易扩展到什么程度。
例如,在尝试获取我的 project.cpp
时,我收到以下错误:
fatal error: gdal_priv.h: No such file or directory #include <gdal_priv.h>
是否可以编写类似于LinkingTo: BH, GDAL, sqlite3
的跨平台的东西?
如何知道哪些 C++ 库已与 Rcpp 兼容(如 BH for Boost)?
C++ 子项目使用 cmake 工作正常:我能以某种方式利用这些 cmake 文件来帮助 Rcpp 找到外部依赖项吗?
这真的是三个问题。
对于 1) 我不知道 if/how gdal
和/或 sqlite3
将它们自己导出为 header-only 库。我有点怀疑; gdal
是众所周知的,并且在构建时也作为 "trouble" 的来源而广为人知。 GeoSpatial foks 可能知道并且可能会帮助你。
对于2),问题定义不明确。 "compatible with Rcpp" 是什么意思?目前 CRAN 上有超过 1800 个包使用 Rcpp;也许将它们作为 "existence proof" 并在其中搜索?
对于 3),R 和 CRAN 使用 autoconf
/ configure
比 cmake
多 lot。您当然可以使用 cmake
,但您需要在 SystemRequirements
.
中声明该依赖项
简而言之,打包 外部 库仍然很困难,主要是因为 you 现在必须在最多三个不同的平台上安装它们操作系统。这与Rcpp无关,Rcpp也帮不上什么忙。 :-/
我正在努力使非程序员更容易使用混合 C++/python/R 项目。
我正在考虑使用 Rcpp 包装 C++ 代码以使其在 R 包中可用并希望向最终用户隐藏一些复杂性的可能性。
这个问题旨在了解它实际上更容易扩展到什么程度。
例如,在尝试获取我的 project.cpp
时,我收到以下错误:
fatal error: gdal_priv.h: No such file or directory #include <gdal_priv.h>
是否可以编写类似于
LinkingTo: BH, GDAL, sqlite3
的跨平台的东西?如何知道哪些 C++ 库已与 Rcpp 兼容(如 BH for Boost)?
C++ 子项目使用 cmake 工作正常:我能以某种方式利用这些 cmake 文件来帮助 Rcpp 找到外部依赖项吗?
这真的是三个问题。
对于 1) 我不知道 if/how gdal
和/或 sqlite3
将它们自己导出为 header-only 库。我有点怀疑; gdal
是众所周知的,并且在构建时也作为 "trouble" 的来源而广为人知。 GeoSpatial foks 可能知道并且可能会帮助你。
对于2),问题定义不明确。 "compatible with Rcpp" 是什么意思?目前 CRAN 上有超过 1800 个包使用 Rcpp;也许将它们作为 "existence proof" 并在其中搜索?
对于 3),R 和 CRAN 使用 autoconf
/ configure
比 cmake
多 lot。您当然可以使用 cmake
,但您需要在 SystemRequirements
.
简而言之,打包 外部 库仍然很困难,主要是因为 you 现在必须在最多三个不同的平台上安装它们操作系统。这与Rcpp无关,Rcpp也帮不上什么忙。 :-/