- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基于cuda10.1,qt5的项目。我使用 cmake 来管理编译。但是,相同的 cmake 脚本在 Windows 中运行良好,但在 Linux 中,编译 .cu 文件时出现错误“Unknown option 'fPIC'”。我查看了 makefile,然后发现有一个额外的错误标志“-fPIC”传递给了 nvcc 编译器。经过数小时的测试,我发现链接 qt5 库会自动传递导致此错误的额外 fPIcflags。我不知道这是 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”错误,因为它无法识别 fPIcflags。
最佳答案
qt5.cmake
有问题。感谢 Robert Crovella 对相关信息的评论(见上文)gitlab.kitware.com/cmake/cmake/issues/16915 .目前还没有完美的解决方案。但是……
一个解决方案,如果您可以将您的项目分成一个库和一个可执行的子项目,那么您就可以完全避免这个问题。尝试将所有 .cu 文件放在库子项目中,并且只在可执行子项目中链接 qt5。这是避免此问题的一种方法。
否则,您可以尝试修改qt5.cmake
定义的变量,解决方案请引用cmake issue 16915 .
关于c++ - 链接 qt5 库通过 cmake 导致错误自动将额外的 fPIcflags传递给 nvcc 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199636/
我在编译静态链接到静态库的共享对象时遇到了很多问题。此问题仅出现在 x84_64 平台上。在 x86_32 上执行相同的编译工作时,我没有任何问题。 也许这是操作系统特定的 GCC 配置,但我的研究表
我是一名优秀的程序员,十分优秀!