Нежелательный флаг `-c`, используемый при установке пакета R с кодом C ++

Я создаю пакет R myCode из многопоточного пакета C ++ под названием myCode, (Как вы можете видеть из Makevars ниже, требуется соединение с двумя существующими библиотеками C ++, library1 а также library2.)

Используя скелет Rcpp, я добавил весь код C ++ в /src и создал этот файл Makevars для вывода общей библиотеки myCode.soв результате чего я включил флаги -fPIC а также -shared:

LIBRARY1_DIR := ./library1/
LIBRARY2_DIR := ./library2/

ABS_LIBRARY1_DIR := $(realpath $(LIBRARY1_DIR))
ABS_LIBRARY2_DIR := $(realpath $(LIBRARY2_DIR))

CXX := g++
CXXFLAGS := -Wno-deprecated -Wall -O3 -fexceptions -g -Wl,-rpath,$(ABS_LIBRARY1_DIR)/lib/
LDLIBS := -I$(ABS_LIBRARY1_DIR)/include/ -I$(ABS_LIBRARY2_DIR)/ -L$(ABS_LIBRARY1_DIR)/lib/ -L$(ABS_LIBRARY2_DIR)/

all: library1 library2 myCode

.PHONY : myCode
myCode: file1.cpp file2.cpp file3.hh file3.cpp file4.hh file4.cpp file5.cpp file5.hh file6.hh file6.hh file7.cpp file7.hh
$(CXX) $(CXXFLAGS) $(INCLUDES) file1.cpp file2.cpp -o myCode.so $(ABS_LIBRARY2_DIR)/importfile1.a -lz -ldl -llibrary1 -lpthread -fPIC -shared.PHONY : library1
library1:
mkdir $(ABS_LIBRARY1_DIR)/build; cd $(ABS_LIBRARY1_DIR)/build; cmake ..; make; cd ../

.PHONY : library2
library2:
cd $(ABS_LIBRARY2_DIR); ./configure; make; cd ../

#.PHONY : clean
clean:
rm myCode.so; rm -rf $(ABS_LIBRARY1_DIR)/build; rm -rf $(ABS_LIBRARY1_DIR)/include; rm -rf $(ABS_LIBRARY1_DIR)/lib; rm -rf $(ABS_LIBRARY1_DIR)/bin; cd $(ABS_LIBRARY2_DIR); make clean;

Это, кажется, правильно компилируется при library(devtools) а также install_github("handle/myCode")… пока он не начнет выводить эти строки, которые бросают несколько 'linker' input unused [-Wunused-command-line-argument] Предупреждения пока не сломается:

clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include"  -std=c++11 -Wno-deprecated -Wall -O3 -fexceptions -g -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/ -fPIC  -Wall -mtune=core2 -g -O2  -c file2.cpp -o file2.o
clang: warning: -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library/lib/: 'linker' input unused [-Wunused-command-line-argument]
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include"  -std=c++11 -Wno-deprecated -Wall -O3 -fexceptions -g -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/ -fPIC  -Wall -mtune=core2 -g -O2  -c file3.cpp -o file3.o
clang: warning: -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/: 'linker' input unused [-Wunused-command-line-argument]
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include"  -std=c++11 -Wno-deprecated -Wall -O3 -fexceptions -g -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/ -fPIC  -Wall -mtune=core2 -g -O2  -c file4.cpp -o file4.o
clang: warning: -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/: 'linker' input unused [-Wunused-command-line-argument]
clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Rcpp/include"  -std=c++11 -Wno-deprecated -Wall -O3 -fexceptions -g -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/ -fPIC  -Wall -mtune=core2 -g -O2  -c file5.cpp -o file5.o
clang: warning: -Wl,-rpath,/private/var/folders/1d/_h9qdvds6l5d7x78b21pn1_45n_16x/T/RtmpabyubP/devtools56576bf4fa65/username-myCode-368aaf6/src/library1/lib/: 'linker' input unused [-Wunused-command-line-argument]
In file included from file6.cpp:1:
In file included from ./file6.hh:27:
./file7.hh:43:10: fatal error: 'lib/library1_header.h' file not found
#include "lib/library1_header.h"^~~~~~~~~~~~~~~~~
1 error generated.
make: *** [file6.o] Error 1

Появляется причина 'linker' input unused [-Wunused-command-line-argument] выбрасывается из-за -c, Опция -c означает «только компилировать, но не ссылаться», поэтому любые связанные с компоновщиком аргументы командной строки игнорируются. Код появился для правильной компиляции до этих строк.

В качестве независимого теста, чтобы проверить выше Makevars работает, он создает общий объект myCode.so если я переименую выше Makefile и беги make, Это работает правильно, и dyn.load("myCode.so") работает в Р.

Почему clang++ -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG запустить при установке пакета R? Могу ли я отключить -c флаги, или мне переписать макевары?

0

Решение

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

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

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

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