Я пытаюсь отладить пакет, который я разрабатываю. Я использую makefile для сборки, проверки и установки пакетов. Пакеты представляют собой пакет Rcpp, поэтому в нем уже есть файлы makevars и makevars.win. То, что я ищу, - это изменить CXXFLAGS только для определенного правила make. Затем make debug
запустит R CMD INSTALL
с CXXFLAGS= -Wall -pedantic -g -O0"
, но обычный make install
запустит с CXXFLAGS=-O3
без какой-либо отладочной информации. есть ли хороший способ динамически изменить это без необходимости изменять мой пакет, личные или системные файлы makevars?
Изменение CXXFLAGS в R CMD INSTALL для разработки пакетов R
Ответы (1)
Я так не думаю, так как есть только один CXXFLAGS
. Но вы можете снова переназначить в разных целевых частях «сделать» и «сделать отладку».
Вы можете просто оставить две версии ~/.R/Makevars.normal
и ~/R/Makevars.debug
и использовать скрипт, чтобы перевернуть ссылку между ними...
За что это стоит. Я просто редактирую ~/.R/Makevars
и комментирую/раскомментирую разные строки.
Редактировать: Как насчет чего-то подобного, основываясь на опубликованном вами Makefile
:
install: $(PKG_NAME)_$(PKG_VERSION).tar.gz
CXXFLAGS+="-O3" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz
debuginstall: $(PKG_NAME)_$(PKG_VERSION).tar.gz
CXXFLAGS+="-Wall -g -O0" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz
Редактировать 2: я только что играл с этим, и это работает:
PKG_NAME=digest
PKG_VERSION=0.5.1
install: $(PKG_NAME)_$(PKG_VERSION).tar.gz
PKG_CFLAGS="-O6" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz
debuginstall: $(PKG_NAME)_$(PKG_VERSION).tar.gz
PKG_CFLAGS="-Wall -g -O0" R CMD INSTALL $(PKG_NAME)_$(PKG_VERSION).tar.gz
После этого он все еще считывает мои ~/.R/Makevars
, поэтому здесь нельзя установить определенные переменные. Но вы можете просто установить MYDEBUG=...
в своем Makefile
, а затем использовать это внутри определения в ~/.R/Makevars
.
make
функция.
- person Dirk Eddelbuettel; 29.12.2011
/bin/sh: CXXFLAGS+= -Wall -pedantic -g -O0: not found
Работает ли это в вашей системе?
- person Andrew Redd; 29.12.2011
+=
и просто =
. В противном случае назначьте MYCXXFLAGS
и расширите его в Makefile
до CXXFLAGS
. Также рассмотрите PKG_CXXFLAGS
.
- person Dirk Eddelbuettel; 29.12.2011
RcmdInstallDbg
и RcmdInstall
....
- person Dirk Eddelbuettel; 29.12.2011