это поддерживает и не использует на остальных.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(libslm LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_VERBOSE_MAKEFILE OFF)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -march=native")
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE)
endif()
# CUDA/Thrust configuration
include(CheckLanguage)
check_language(CUDA)
add_compile_definitions(THRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP)
if(CMAKE_CUDA_COMPILER)
message(STATUS "CUDA support is ON")
enable_language(CUDA)
add_compile_definitions(THRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA)
file(GLOB SRCS "*.cu" "display.cpp")
#set(CMAKE_SHARED_LIBRARY_CUDA_FLAGS "")
#set(CMAKE_SHARED_MODULE_CUDA_FLAGS "")
else()
message(STATUS "CUDA not found")
add_compile_definitions(THRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_OMP)
file(GLOB SRCS "*.cpp")
# FFTW
target_link_libraries(libslm PUBLIC fftw3f)
endif()
file(GLOB HDRS "*.h")
add_library(libslm SHARED ${SRCS} ${HDRS})
set_target_properties(libslm PROPERTIES OUTPUT_NAME "slm")
target_include_directories(libslm PRIVATE "..")
target_include_directories(libslm PUBLIC "../../vendor/thrust")
Структура файлов:
amplitude.cpp
amplitude.cu
amplitude.h
CMakeLists.txt
CMakeLists.txt.user
display.cpp
display.h
field_container.h
functors.h
gs_algorithm.cpp
gs_algorithm.cu
gs_algorithm.h
hologram.cpp
hologram.cu
hologram.h
slm.cpp
slm.cu
slm.h
Каждый .cu файл содержит только инклюд соответсвтующего .cpp файла (костыль, чтобы они комплиилилсь через nvcc, если есть способы умнее, то мне интересно)
Так вот, при сборке в nvcc почему-то попадает флаг -fPIC, который для него не определен, из-за чего компилятор падет с ошибкой.
Я посмотрел, этот флаг почему-то добавляется в CUDA_FLAGS в flags.make.
Вопрос 1: какая скотина добавляет этот флаг?
Вопрос 2: что я делаю не так?
не совсем про то что спрашиваешь. про c++ by nvcc можно как-то так попробовать https://stackoverflow.com/questions/58861467/how-to-compile-c-as-cuda-using-cmake
-fPIC похож на "стандартный" флаг для шаредной либы
А его может добавлять факт добавления либы? Всм, у меня там подключаются Qt, fftw и прочее. Оно может влиять?
точно не подскажу, но кажется могут
Обсуждают сегодня