[CMake] FindCUDA ignores project dependencies when separable compilation is on

Irwin Zaid irwin.zaid at physics.ox.ac.uk
Tue Jan 6 12:05:51 EST 2015


Right, when I modify FindCUDA.cmake as you describe everything works. So that's good.

Without doing that, I still don't see CMAKE_CXX_FLAGS_DEBUG propagating its flags to the intermediate link file. Did you mean to put message commands into CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS itself? When I put them into my main CMakeLists.txt, nothing is printed for ${nvcc_flags} or the other variables.

James Bigler wrote:
> On Tue, Jan 6, 2015 at 8:54 AM, Irwin Zaid 
> <irwin.zaid at physics.ox.ac.uk <mailto:irwin.zaid at physics.ox.ac.uk>> wrote:
>
>     Okay, an update on this.
>
>     2) This is trickier and, unfortunately, still not working. We are
>     already adding -fPIC to CMAKE_CXX_FLAGS, should that not be
>     enough? I also tried adding it to both CMAKE_CXX_FLAGS_DEBUG and
>     CMAKE_CXX_FLAGS_RELEASE, with no effect.
>
>     Looking into FindCUDA.CMake at
>     CUDA_LINK_SEPARABLE___COMPILATION_OBJECTS, I find code very
>     similar to what you are describing. Are you saying that in
>     addition to what is below, we need to add what you proposed? This
>     is what I see.
>
>     --
>
>
> It can be put here (before this foreach).
>
>     foreach(config ${CUDA_configuration_types})
>     string(TOUPPER ${config} config_upper)
>     # Add config specific flags
>     foreach(f ${CUDA_NVCC_FLAGS_${config___upper}})
>     list(APPEND config_specific_flags $<$<CONFIG:${config}>:${f}>)
>     endforeach()
>     set(important_host_flags)
>     _cuda_get_important_host___flags(important_host_flags
>     ${CMAKE_${CUDA_C_OR_CXX}___FLAGS_${config_upper}})
>     foreach(f ${important_host_flags})
>     list(APPEND flags $<$<CONFIG:${config}>:-__Xcompiler>
>     $<$<CONFIG:${config}>:${f}>)
>     endforeach()
>     endforeach()
>
>
> Or it can be put here (or after the foreach).
>
> I'm concerned that the flag didn't show up after adding it to the 
> _DEBUG or _RELEASE variants. If you could add a few message commands 
> around that might help see what is going on. The flag needs to be 
> propagated.
>
> You could sprinkle a few commands like this:
> message("going to run COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} 
> -dlink ${object_files} -o ${output_file}
> ${flags}")
>
>


More information about the CMake mailing list