Operando su Writing R Extension, Section 1.2, sembra che si dovrebbe essere in grado di gestirlo con un paio di script di shell. Come un esempio minimo, (che lavora su una macchina Linux), ho creato un pacchetto base da Rcpp::Rcpp.package.skeleton
, e mettere i seguenti due file nella directory principale del progetto:
configurare
#!/bin/bash
if [ ! -d "~/.R" ]; then
mkdir ~/.R; touch ~/.R/Makevars
echo "CXXFLAGS= -O3 -std=c++11 -Wall -mtune=core2" > ~/.R/Makevars
elif [ ! -e "~/.R/Makevars" ]; then
touch ~/.R/Makevars
echo "CXXFLAGS= -O3 -std=c++11 -Wall -mtune=core2" > ~/.R/Makevars
else
mv ~/.R/Makevars ~/.R/Makevars.bak_CustomConfig
echo "CXXFLAGS= -O3 -std=c++11 -Wall -mtune=core2" > ~/.R/Makevars
fi
pulizia
#!/bin/bash
if [ -e "~/.R/Makevars.bak_CustomConfig" ]; then
mv -f ~/.R/Makevars.bak_CustomConfig ~/.R/Makevars
fi
e quindi li ha resi eseguibili (chmod 777 path/to/project/root/configure
e chmod 777 path/to/project/root/cleanup
). Quando ho fatto funzionare Costruire e Ricarica ho ottenuto (estratto):
g++ -m64 -I/usr/include/R -DNDEBUG
-I/usr/local/include
-I"/home/nr07/R/x86_64-redhat-linux-gnu-library/3.2/Rcpp/include"
-fpic -O3 -std=c++11 -Wall -mtune=core2
-c rcpp_hello.cpp -o rcpp_hello.o
g++ -m64 -shared -L/usr/lib64/R/lib
-Wl,-z,relro -o CustomConfig.so RcppExports.o rcpp_hello.o
-L/usr/lib64/R/lib -lR
che sostituisce i valori di default R Makevars, e usa le opzioni corrette.
Questo è solo un esempio di base, quindi probabilmente vorrebbe prendere un paio di passi avanti, a seconda dei tuoi obiettivi:
- Adattare gli script per diverse piattaforme (ad esempio Unix/Linux vs Windows/Windows 64-bit), che viene toccato nell'articolo collegato, credo.
- Verificare che l'impostazione delle autorizzazioni del file dal proprio computer sia sufficiente per eseguire questi file su un computer diverso (penso che funzionerà, ma non sono completamente positivo).
Non è una domanda Rcpp (ma una domanda di compilazione del pacchetto R generica) e ha risposto in precedenza in diverse occasioni. Usa 'src/Makevars' o' ~/.R/Makevars'. –