I meant putting messages into FindCUDA.cmake itself. Only certain flags are propagated for the intermediate link file compilation, because I've had a lot of trouble over the years for propagating all the host flags. This set of flags is filtered by the function _cuda_get_important_host_flags. Right now only the CMAKE_CXX_FLAGS_*CONFIG* are being processed. None of the flags in the configuration free variable are passed. That was the "patch" I wanted you to try. Why -fPIC in the configuration specific CMAKE_CXX_FLAGS wasn't working, I'm not sure. The code is there to do it.
On Tue, Jan 6, 2015 at 10:05 AM, Irwin Zaid <irwin.z...@physics.ox.ac.uk> wrote: > 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.z...@physics.ox.ac.uk >> <mailto:irwin.z...@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}") >> >> >>
-- 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: http://public.kitware.com/mailman/listinfo/cmake