Mennny
Mennny

Reputation: 405

CUDA 5.0, CMake and Make failing on OSX 10.8.3

I try to compile a simple CUDA "Hello World" using CMake on my Mac OSX 10.8.3.

Calling cmake . seems to succeed. Here is my 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)

... and the output:

-- 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

But calling make afterwards fails with the following error(s):

[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

I googled the shown errors but couldn't find any sufficient answers. Any ideas why make fails, although cmake succeeded.

Thanks for your help.

Upvotes: 4

Views: 3262

Answers (2)

pfac
pfac

Reputation: 830

If you don't want to change your CMakeLists.txt, it works if you set the environment variable CXX to "gcc" (assuming you don't have any other GCC in your path before the one in /usr/bin).

CMake will pick it up automatically.

Upvotes: 0

joelmeans
joelmeans

Reputation: 122

The default C compiler in XCode changed to CLang in OS X Lion. CLang is incompatible with nvcc, so you need to change the compiler that nvcc uses for non-cuda (host) code. Adding the following to your CMakeList.txt will work:

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()

Adjust the path to gcc if necessary.

Upvotes: 1

Related Questions