[CMake] compiling .cpp/.cxx with CUDA compiler

Robert Maynard robert.maynard at kitware.com
Tue Jul 2 14:47:57 EDT 2019


In general I go with the source property approach, since you can pass
it a collection of files to be marked as CUDA.
If you are aware of when all sources have been added to a target you
can easily mark them all as cuda with:

get_target_property(source_files <target> SOURCES)
set_source_files_properties(${source_files} PROPERTIES LANGUAGE CUDA)

As far as changing the mapping of file extensions to languages, as far
as I am aware that is currently unsupported.

On Tue, Jul 2, 2019 at 2:19 PM Kai Germaschewski
<kai.germaschewski at gmail.com> wrote:
>
> For background, a bunch of projects help writing portable C++ code that can be compiled into CUDA device code as one option, e.g. hemi, kokkos, RAJA (https://devblogs.nvidia.com/simple-portable-parallel-c-hemi-2/). As a consequence, if available those source files need to be compiled with the CUDA compiler, but with the regular C++ compiler otherwise.
>
> I'm wondering whether there is a clean way to support this in a cmake build. Renaming my source files to `.cu` is bad if I'm on the system without CUDA. I figured out that I can set the LANGUAGE property on a given .cpp/.cxx source file to CUDA to have it compiled with CMAKE_CUDA_COMPILER, but that's quite a hassle to do for every source file. Kokkos instead creates a `nvcc_wrapper` script which one is supposed to use as CMAKE_CXX_COMPILER, but that definitely seems like a kludge to me (and giving me troubles).
>
> Things would probably be much better for me if there was a way to change the default language for .cxx / .cpp extensions. Is there a way to do this?
>
> --Kai
>
>
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake


More information about the CMake mailing list