2013-12-10 44 views
1

我在使用R CMD SHLIB時,很難理解構造編譯標誌的步驟。我使用以下內容:在R CMD中構建標誌SHLIB

  • ~/.R/Makevars限定`CPPFLAGS = -O3'
  • src/Makevars.win限定PKG_CPPFLAGS = -O3
  • 包括RCPP和RcppGSL如在描述文件

,其中第二步驟的依賴關係顯然是多餘的,但我這樣做,以防萬一PKG_CXXFLAGS被初始化爲不同的東西。

但是,當我運行R CMD SHLIB我發現我的-O3標誌,但也-UNDEBUG -Wall -pedantic -g -O0。這些附加標誌從哪裏來? Rcpp和RcppGSL能否以我無法通過我的Makevars.in控制的方式影響這些標誌?

+1

最後,我只是直接使用makeconf中的定義編寫Makefile。 – tlamadon

回答

0

對於每個用戶或個人設置,我只使用~/.R/Makevars,這將影響所有R CMD SHLIBR CMD COMPILE調用,包括來自Rcpp的調用。

您也可以在每個項目Makefile或src/Makevars中定義它們,除了每個用戶文件之外,您當然也可以編輯系統範圍的變體(這是您混淆的其他值的來源)。後者請參閱文件$R_HOME/etc/Makeconf

最後,DESCRIPTION在這裏沒有任何關係。

+0

但我實際上看了一下Makeconf,並且找不到例如「迂腐」的地方。 – tlamadon

+0

我不知道你的機器,但是在我的機器上,'-pedantic'是通過我的用戶本地'Makevars'添加的,如果當我想要它添加時。機器範圍內的默認值是Debian配置中的'--O2'。 –