Мой подход по умолчанию — узнать, как другие решили проблему. Существует более 2800 пакетов CRAN, и многие из них существуют уже более десяти лет. Проблема решаемая, и она была решена.
Теперь верно и то, что документация есть, но, возможно, слишком разбросана. Более того, цели меняются. Например, несколько лет назад мы все еще использовали src/Makefile
, в наши дни это очень рекомендуется против из-за необходимости мультиархивных сборок (в OS X, в Windows, а однажды и в Linux).
Поэтому попытка сохранить простоту помогает. На самом деле у вас может быть действующий проект C++... без всего. Просто поместите исходные файлы в src/
вашего пакета foo, и R будет знать, как собрать libfoo.so
или libfoo.dylib
или ..., в зависимости от платформы. И если вам нужны другие заголовочные файлы, попробуйте использовать src/Makevars
. Для внешних зависимостей это становится сложнее, и это то, что нужно изучить autoconf
и др., но многие пакеты скользят мимо с чем-то простым.
Поэтому, пожалуйста, расширьте свой вопрос, покажите, что не получается, и задокументируйте, что вы пробовали. Я уверен, что мы можем помочь вам вместе.
Редактировать: И если вы хотите сделать это с помощью пакета Rcpp (который помогает с интеграции R и C++), то есть целая виньетка о том, как сделать это в вашем собственном пакете .
Редактировать 2: Теперь, когда вы расширили свой вопрос, CUDA — это совершенно другой зверь. Это сложнее, так как вы смешиваете разные компиляторы и т. д. На CRAN есть два примера пакетов, изучите их.
person
Dirk Eddelbuettel
schedule
02.03.2011