Я написал C ++ пакет "P". Он имеет интерфейс R пакета "RP", построенный с использованием Rcpp. P использовал Make непосредственно для компиляции, но был переключен на CMake для переносимости. CMake используется для поиска заголовков (давайте назовем их коллекции HF) и статических библиотек (SL в оставшейся части настоящего поста) для общесистемных библиотек.
Я хочу обновить RP, чтобы иметь возможность зависеть от эволюции CMake P. В исходные тексты C ++ RP/src/*.cpp
включены HF-элементы и, конечно, SL статически связаны.
Как лучше всего вызвать CMake в RP/src/Makevars
для получения местоположений HF и SL? Смысл здесь не в том, чтобы заменить систему сборки Rcpp, а в том, чтобы использовать возможности поиска CMake.
На данный момент P (версия CMake) и RP собираются на моей машине с использованием ссылок на абсолютные пути в RP/src/Makevars
, таких как:
INC_NLOPT = /usr/local/Cellar/nlopt/2.4.2_2/include
LIB_NLOPT = /usr/local/Cellar/nlopt/2.4.2_2/lib/libnlopt.a
Поскольку в настоящий момент мы используем RP для внутреннего использования, мы можем ожидать, что CMake, HF и SL будут установлены на каждой машине, на которой мы развернемся.