У меня есть проект, основанный на cuda10.1, qt5.И я использую cmake для управления компиляцией.Однако тот же сценарий cmake хорошо работает в Windows, но в Linux я получил ошибку "Неизвестная опция 'fPIC'" при компиляции файлов .cu.Я смотрю в makefile, а затем обнаруживаю дополнительный флаг ошибки "-fPIC", передаваемый компилятору nvcc.Потратив часы на тестирование, я обнаружил, что связывание библиотек qt5 автоматически пройдет дополнительный флаг fPIC, который вызывает эту ошибку.Я не знаю, это ошибка или особенность cmake?
cmake_minimum_required(VERSION 3.10)
project(PyPhysLeo LANGUAGES CXX CUDA)
find_package(Qt5 COMPONENTS Core Widgets)
if(Qt5_FOUND)
message("Find QT5")
link_libraries(Qt5::Widgets Qt5::Core Qt5::Gui)
endif()
set(CMAKE_CXX_STANDARD 14 CACHE STRING "CXX STANDARD VERSION 11,14,17")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_CUDA_SEPARABLE_COMPILATION ON CACHE BOOL "DEFAULT SET SEPERABLE COMPILATION MODE")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=sm_60")
include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE})
add_executable(test test.cu)
Если вы попробуете скрипт cmake выше с любым примером кода cuda, вы получите ошибку nvcc fatal, потому что она не распознает флаг fPIC.