【发布时间】:2019-05-18 13:57:31
【问题描述】:
我有一个基于cuda10.1,qt5的项目。我使用 cmake 来管理编译。然而,相同的 cmake 脚本在 Windows 中运行良好,但在 Linux 中,编译 .cu 文件时出现错误“Unknown option 'fPIC'”。我查看了makefile,然后发现有一个额外的错误标志“-fPIC”传递给了nvcc编译器。经过数小时的测试,我发现链接 qt5 库会自动传递导致此错误的额外 fPIC 标志。不知道这是cmake的bug还是特性?
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)
如果您使用任何示例 cuda 代码尝试上述 cmake 脚本,您将收到“nvcc fatal”错误,因为它无法识别 fPIC 标志。
【问题讨论】: