Mam projekt, który buduje bibliotekę i chcę dodać do niej wsparcie cuda.CMake: jak dodać cuda do istniejącego projektu
Struktura jest:
| bazowego katalogu
| _subdir1
| _subdir2
Podstawowa struktura plików CMakeLists.txt: (subdir2 nie jest ważne).
w basedir:
cmake_minimum_required(VERSION 2.6)
PROJECT(myproject)
find_package(CUDA)
INCLUDE_DIRECTORIES(${MYPROJECT_SOURCE_DIR})
ADD_SUBDIRECTORY(subdir1)
ADD_SUBDIRECTORY(subdir2)
w podkatalog1:
ADD_LIBRARY(mylib shared
file1.cpp
file2.cpp
file3.cpp
)
INSTALL(
TARGETS mylib
DESTINATION lib
PERMISSIONS
OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
FILE(GLOB_RECURSE HEADERS RELATIVE ${MYPROJECT_SOURCE_DIR}/myproject *.h)
FOREACH(HEADER ${HEADERS})
STRING(REGEX MATCH "(.*)[/\\]" DIR ${HEADER})
INSTALL(FILES ${HEADER} DESTINATION include/myproject/${DIR})
ENDFOREACH(HEADER)
I rzeczywiście tak naprawdę nie wie, jak umieścić CUDA wsparcie do niego. Chcę zastąpić file2.cpp plikiem file2.cu i zrobiłem to, ale nie zbudowałem pliku .cu, tylko pliki cpp.
Czy muszę dodać CUDA_ADD_EXECUTABLE(), aby uwzględnić wszystkie pliki cuda? Jak mogę następnie połączyć go z innymi plikami?
Próbowałem dodanie następujących do CMakeLists.txt w podkatalog1:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
To będzie skompilować plik wykonywalny, ale zbudować CUDA. Jak połączyć go z mylib? Tylko z ?:
TARGET_LINK_LIBRARIES(cuda mylib)
muszę przyznać, że nie jestem doświadczony w cmake, ale myślę, że zorientowali.
Dzięki za to proste rozwiązanie! Działa świetnie. – nanosto