Ho un progetto che costruisce una libreria e voglio aggiungere un po 'di supporto per cuda ad esso.CMake: come aggiungere cuda al progetto esistente
La struttura è:
| Basedir
| _subdir1
| _subdir2
La struttura di base dei file CMakeLists.txt: (subdir2 non è importante).
in Basedir:
cmake_minimum_required(VERSION 2.6)
PROJECT(myproject)
find_package(CUDA)
INCLUDE_DIRECTORIES(${MYPROJECT_SOURCE_DIR})
ADD_SUBDIRECTORY(subdir1)
ADD_SUBDIRECTORY(subdir2)
in subdir1:
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)
Io in realtà non so davvero come mettere il CUDA-supporto in esso. Voglio sostituire file2.cpp con file2.cu e l'ho fatto, ma non ha creato il file .cu, solo i file cpp.
Devo aggiungere CUDA_ADD_EXECUTABLE() per includere tutti i file cuda? Come faccio a collegarlo agli altri file?
Ho provato ad aggiungere quanto segue alla CMakeLists.txt in subdir1:
CUDA_ADD_EXECUTABLE(cuda file2.cu OPTIONS -arch sm_20)
che compilerà il file, ma costruire un cuda eseguibile. Come faccio a collegarlo a mylib? Basta con ?:
TARGET_LINK_LIBRARIES(cuda mylib)
devo ammettere che non sto sperimentato in CMake, ma credo che tu pensato che.
Grazie per questa soluzione facile! Funziona perfettamente. – nanosto