Правильный ответ на мой вопрос - тот, который написал Сэм Варшавчик: как он указал, это невозможно. Тем не менее, для тех, кто может быть заинтересован, я нашел обходной путь, который решает мою проблему, полезный, например, если вы хотите создать общую библиотеку CUDA-C / C ++ с Autotools.
Хитрость заключается в том, чтобы сначала сгенерировать файл src / Makefile.in с помощью autotools, а затем изменить этот файл перед командой make. В моих версиях autoconf / automake соответствующая строка:
$(AM_V_CXXLD)$(libexample_la_LINK) ...
, которую следует заменить на что-то вроде:
nvcc -ccbin=g++ --compiler-options '-O3 -Wall -fPIC' -shared -arch sm_30 --ptxas-options=-v --relocatable-device-code true -o source-files -lm
, где libexample - это имя библиотеки, а source- файлы - это список файлов, которые нужно скомпилировать. Будьте осторожны: перед строкой стоит табуляция, а не пробелы. Если вы хотите использовать «make install», вам также следует изменить команду, которая устанавливает библиотеку в нужную папку. В моем случае:
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)";
«$$ list2» следует заменить на «libexample.so»
Этот патч может быть выполнен автоматически с помощью сценария оболочки, запущенного в конце Конфигурационный скрипт. Я поместил полный рабочий пример в https://github.com/golosio/sharedcuda_autotools