[CMake] CMake, CUDA, VS build issues

Patrick Charrier patrick.charrier at igd.fraunhofer.de
Fri Jan 14 13:05:36 EST 2011


Hi all,

I am experiencing some (random) reloading of VS-project files and
rebuilding when using the combination of CMake, Visual Studio and CUDA.

Particularly when performing the following steps.
1. Project has been built before.
2. Perform an SVN update.
3. Start CMake. Configure and Generate.
4. Open the generated VS Solution.
5. Build in Debug Mode. (Or Rebuild All.)
6. Build in Release Mode. (Or Rebuild All.)

After Point 6 the fun part starts.
7. At this point VS runs CMake Configuration and Generation. Why this in
the first place?
8. VS will then ask to reload the newly generated VS-project files for all
the CUDA VS-projects (libraries) in the solution.
9. I hit yes and the project is being built.
10. When trying to start the application, VS will prompt me to reload the
VS-project files again, as in step 8.
11. I hit yes again, but this time VS just says:
1>------ Skipped Build: Project: PACKAGE, Configuration: Release Win32 ------
1>Project not selected to build for this solution configuration
2>------ Skipped Build: Project: INSTALL, Configuration: Release Win32 ------
2>Project not selected to build for this solution configuration
========== Build: 0 succeeded, 0 failed, 7 up-to-date, 2 skipped ==========

The problem only occurs with CUDA and VS from what I know.
My main question is, why is there a Reconfiguration and Regeneration in
step 7, and how can I avoid it? There should be no need for it, since step
3 should assure that the project files are fresh. Also why did it build
smoothly in Debug (step 5), but not Release (step 6)?
Also, what does the second Regenerate in step 11 mean?

My guess is, that step 7 is somehow caused by Debug and Release sharing
the same CUDA ".depend" and ".cmake" files in the CMakeFiles subdirectory of
each CUDA VS-project. But how exactly, and how could I fix that?

Thank you and Best Regards,
  Patrick




More information about the CMake mailing list