[CMake] CUDA: COMPILE_DEFINITIONS not picked up

Peter Steinbach steinbach at scionics.de
Tue Aug 30 10:09:57 EDT 2016


Karl,

good question. The docs say that you supply OPTIONS to cuda_add_library, 
which are in turn handed over to cuda_wrap_srcs. the only chance I see 
is digging there. internally, both cuda_add_xxx create regular cmake 
targets.

I am not sure why cmake doesn't accept subsequent set_target_properties 
calls on them. I cannot spare the time resources to dive into this 
further. Sorry! Maybe it's worthwhile to file a bug report and bring 
that to the attention of the FindCUDA.cmake author?

Best,
peter

On 08/30/2016 11:02 AM, Karl Ljungkvist wrote:
> Peter,
>
> I use CMake 3.5.1 and 3.0.2, and this works the same with both.
>
> Thanks for your suggestions. It does indeed work if I define them
> explicitly like that, but the reason why I want to use something like
> COMPILE_DEFINITIONS is that we have a large library that has several
> targets with different setups (release and debug mode, for instance).
>
> Most of the library is regular C++ and there the COMPILE_DEFINITIONS
> propagates to all source files. Now I want it to propagate to any CUDA
> .cu files too.
>
> What would it take to FindCUDA respect COMPILE_DEFINITIONS too?
>
> Best,
> Karl
>
> On 2016-08-26 09:41, Peter Steinbach wrote:
>> Hey Karl,
>>
>> just gave it another shot ... so I can confirm what you saw with cmake
>> 3.3 (btw, what cmake version did you use?). I should try a more recent
>> one to make sure as well.
>>
>> anyhow, there 2 global workarounds that you have at your disposal:
>> 1) set(CUDA_NVCC_FLAGS "-Dfoo") needs to be called *BEFORE* any
>> cuda_add_xxx according to `cmake --help-module FindCUDA`
>>
>> 2) add_definitions(-Dfoo), I called it before cuda_add_xxx too and it
>> worked as well
>>
>> Hope that get's you going -
>> P
>


More information about the CMake mailing list