Автоматическая генерация Makevars и настройка файлов

Друзья,

Есть ли автоматический способ генерации Makevars а также configure? Я компилирую свой код C ++, используя терминал bash с г ++ компилятор.

пример: У меня есть следующий код, написанный с использованием Rcpp.h библиотека, где я использую gsl/gsl_sf_bessel.h заголовочный файл, то есть я использую внешнюю библиотеку Rcpp.

#include <Rcpp.h>
#include <gsl/gsl_sf_bessel.h>
using namespace Rcpp;

// [[Rcpp::export]]
double my_bessel(double x){
return gsl_sf_bessel_J0 (x);
}

В приведенном выше примере, учитывая конфигурации и путь к файлам заголовков моего компьютера, я могу скомпилировать приведенный выше код, используя приведенный ниже код в терминале bash:

g++ -I"/usr/include/R/" -DNDEBUG -I"/home/pedro/R/x86_64-pc-linux-gnu-library/3.5/Rcpp/include" -I"/home/pedro/Dropbox/UFPB/Redes Neurais e Análise de Agrupamento/Rcpp" -D_FORTIFY_SOURCE=2  -fpic  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt  -c program.cpp -o program.o
g++ -shared -L/usr/lib64/R/lib -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -o program.so program.o -L/usr/lib64/R/lib -L/usr/include/gsl -lR -lgsl -gslcblas -lm

Основываясь на настройках и путях библиотек на моем компьютере, я могу с помощью приведенного выше кода сгенерировать объектные файлы и файл .so. Однако, как мы знаем, эти пути не обязательно будут работать, когда функция скомпилирована на компьютере, отличном от пользователя пакета. Для этого есть Makevars а также configure файлы.

Вопрос: Есть ли способ автоматически создать Makevars а также configure файлы, основанные на приведенных выше инструкциях сборки?

CXX=g++
CXXFLAGS +=`-O3 -Wall -pipe -Wno-unused -pedantic`
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
PKG_LIBS += `gsl-config --libs`

Я создал Makevars файл с содержанием чуть выше. Однако я не уверен, есть ли способы сделать это автоматически, используя операторы сборки, представленные ранее.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]