Я хочу установить различные компиляторы для разных папок в моем проекте, которые должны компилироваться в общую библиотеку.
Структура проекта следующая:
/Cuda
a.cu
b.cu
c.cu
header.cuh
/SYCL
a.cpp
b.cpp
c.cpp
header.h
main.cpp
test.cpp
Все файлы в папке Cuda должны быть скомпилированы nvcc, а файлы в папке SYCL — специальным компилятором, который присутствует по пути в системе. Все файлы за пределами этих папок (а именно main.cpp и test.cpp) представляют собой обычный код C++ и используют заголовки, присутствующие в этих двух папках, и должны быть скомпилированы с помощью GCC.
Как мне написать CMake для такой структуры проекта (которая должна быть общей библиотекой).
Изменить. В проекте не обязательно должен быть только один выделенный CMake. Мой подход был следующим:
- Каждая папка (Cuda и SYCL) может иметь свой выделенный файл CmakeLists.txt, в котором будет указан компилятор и различные флаги для него.
- Главный CMake вне папки может использовать команду
add_subdirectory
. И вот тут я застрял, не знаю, что делать дальше, как связать эти две папки с основным и тестовым файлами.
add_subdirectory
. А выделенный Cmake может указать компиляторы и все остальное. Кроме того, я полагаю, что этот ответ устарел. Как следует из этого ответа (stackoverflow.com/questions/58861467/), можно указать язык компиляции для определенных файлов в проекте. - person Atharva Dubey   schedule 27.06.2021