macos - CUDA 5.0、CMake 和 Make 在 OSX 10.8.3 上失败

标签 macos cuda makefile cmake osx-mountain-lion

我尝试在 Mac OSX 10.8.3 上使用 CMake 编译一个简单的 CUDA“Hello World”。

调用 cmake .似乎成功了。这是我的 CMakeList.txt :

project(HelloWorld)
cmake_minimum_required(VERSION 2.8)

FIND_PACKAGE(CUDA)

CUDA_INCLUDE_DIRECTORIES(/Developer/NVIDIA/CUDA-5.0/samples/common/inc)
CUDA_ADD_EXECUTABLE(helloWorld helloWorld.cu)

...和输出:
-- The C compiler identification is Clang 4.2.0
-- The CXX compiler identification is Clang 4.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found CUDA: /Developer/NVIDIA/CUDA-5.0 (found version "5.0")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/mennny/Documents/UNI/6_Semester/0_PMPP/1_exercises/cuda-hello-world

但是打电话make之后失败并出现以下错误:
[100%] Building NVCC (Device) object CMakeFiles/helloWorld.dir//./helloWorld_generated_helloWorld.cu.o
clang: error: unsupported option '-dumpspecs'
clang: error: no input files
CMake Error at helloWorld_generated_helloWorld.cu.o.cmake:206 (message): Error generating /Users/mennny/Documents/UNI/6_Semester/0_PMPP/1_exercises/cuda-hello-world/CMakeFiles/helloWorld.dir//./helloWorld_generated_helloWorld.cu.o


make[2]: *** [CMakeFiles/helloWorld.dir/./helloWorld_generated_helloWorld.cu.o] Error 1
make[1]: *** [CMakeFiles/helloWorld.dir/all] Error 2
make: *** [all] Error 2

我用谷歌搜索了显示的错误,但找不到任何足够的答案。
任何想法为什么make失败,尽管 cmake成功了。

谢谢你的帮助。

最佳答案

XCode 中的默认 C 编译器在 OS X Lion 中更改为 CLang。 CLang 与 nvcc 不兼容,因此您需要更改 nvcc 用于非 cuda(主机)代码的编译器。将以下内容添加到您的 CMakeList.txt 将起作用:

if (NOT DEFINED CUDA_HOST_COMPILER AND CMAKE_C_COMPILER_ID STREQUAL "Clang" AND EXISTS /usr/bin/gcc)
  set(CUDA_HOST_COMPILER /usr/bin/gcc CACHE FILEPATH "Host side compiler used by NVCC")
  message(STATUS "Setting CMAKE_HOST_COMPILER to /usr/bin/gcc instead of ${CMAKE_C_COMPILER}.")
endif()

如有必要,调整 gcc 的路径。

关于macos - CUDA 5.0、CMake 和 Make 在 OSX 10.8.3 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286588/

相关文章:

swift - 在 macOS 上播放声音

objective-c - 只有成功才能在 SenTest 中运行代码的任何方法?

java - 如果 NVIDIA 控制面板设置计算优化,cuCtxCreate 会失败

c - 在 CUDA 中使用全局内存初始化共享内存时出错

makefile - 无法在配方中分配变量

c++ - 如何让我的基于 makefile 的 C++ 项目以最短和最简单的方式与 QT 库一起工作?

macOS:无法将 NSTextField 置于基于自定义 NSView 的类中

swift - 如何在 mac OS 上使用 CNContactViewController 编辑联系人

c++ - 在 CUDA 上需要有关 2D 纹理的帮助。没有得到我想要的索引的预期值

c - 交叉编译问题