Я работаю над проектом, в котором смешаны C ++ и CUDA. Кроме того, он связывает сторонние библиотеки, в частности, мы подозреваем, что эта проблема исходит от aws-sdk-c++
.
Проблема в том, что когда мы связываемся с нашими библиотеками, которые используют AWS, флаг -pthread
добавляется к варианты компиляции нашей цели. В нашем целевом проекте есть файлы .cpp
и .cu
, поэтому, когда nvcc
компилируется и флаги передаются с хоста на компиляцию устройства, мы получаем
nvcc fatal : Unknown option 'pthread'
. много, проблема в том, что это решение часто либо использует более старый CMake, который использует CUDA_ADD_LIBRARY
, в котором проблема не возникает, и можно установить CUDA_PROPAGATE_HOST_FLAGS=OFF
, чтобы исправить это, либо это вопрос указания нарушающего pthread
флаг в выражениях генератора, таких как
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:${my_cxx_flags}>")
add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:${my_cuda_flags}>")
(взято из этого ответа) Это не вариант для нас, поскольку мы не включаем флаг pthread
самим собой, а через сторонняя сторона, с которой мы связываемся.
Итак, я предполагаю, что мой вопрос в том, есть ли способ в современном CMake предотвратить распространение флагов хоста на nv cc или, возможно, удаление спецификаций c flags из nv cc, поскольку мы знаем, что вызывает наши проблемы.
Или любое другое решение, позволяющее нам компилировать файлы CUDA с использованием nv cc в библиотеке, которая связана с pthread