【发布时间】:2021-09-09 21:36:55
【问题描述】:
我希望为我的项目中的不同文件夹设置各种编译器,这些编译器应该编译为共享库。
项目结构如下-
/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命令。这就是我卡住的地方,我不确定下一步该怎么做,如何将这两个文件夹与主文件和测试文件链接起来。
【问题讨论】:
-
This post 可能会回答您的问题。简而言之,CMake 不支持在同一个 CMake 项目中为同一种语言使用多个编译器。
-
感谢您的回复@JérômeRichard。虽然一个 CMake 文件可能没有该功能,但我认为每个文件夹可能包含一个专用的 CMakeLists.txt 并且“主”CMake 可以使用
add_subdirectory命令。专用的 Cmake 可以指定编译器和其他所有内容。另外,我想这个答案是旧的。正如这个答案所暗示的 (stackoverflow.com/questions/58861467/…),可以为项目中的某些文件指定编译语言。