【发布时间】:2016-07-11 19:13:55
【问题描述】:
我已经构建了一个包含 C/C++ 代码的 R 包。我现在正试图在win-builder 上测试这个包。不幸的是,00install.out 中返回了以下错误:
* installing *source* package 'mypackage' ...
** libs
running 'src/Makefile.win' ...
/usr/bin/make --directory=lib/mylib/
gcc -g -Wall -fPIC -c mycode.c
make[1]: gcc: Command not found
make[1]: *** [mycode.o] Error 127
make: *** [mylib] Error 2
Warning: running command 'make --no-print-directory -f "Makefile.win"' had status 2
ERROR: compilation failed for package 'mypackage'
* removing 'd:/RCompile/CRANguest/R-release/lib/mypackage'
尝试使用gcc、gcc.exe 和cc 产生了类似的结果。
据此,我根据these instructions在Windows虚拟机上搭建了一个测试环境。在此环境中从命令行对代码运行 R CMD INSTALL . 导致代码编译和软件包安装没有问题。 (运行R CMD build . 也没有产生任何错误。)
win-builder 是怎么回事,如何实现编译?
或者,更重要的是,能够在 Windows 上构建软件包就足够了,无论它是否适用于 win-builder?
我的Makefile.win如下:
export CCOMP = gcc
export CPPCOMP = c++
export ADD_CC_FLAGS = -O3
APP_DIR = ./apps/myapp
LIB_DIR = ./lib/mylib
.PHONY: all $(APP_DIR) $(LIB_DIR)
all: $(APP_DIR) $(LIB_DIR)
$(APP_DIR) $(LIB_DIR): mylib
$(MAKE) --directory=$@
$(APP_DIR): $(LIB_DIR) mylib
mylib:
$(MAKE) --directory=lib/mylib
将echo %PATH% 插入到mylib 目标下的make 文件中产生:
Makefile.win:24: *** missing separator. Stop.
【问题讨论】:
-
您可以包含您的 Makefile.win 内容吗?