How do I change the startup project of a Visual Studio solution via CMake?

I am using CMake to generate Visual Studio projects. Everything works fine except one thing.

The startup project in the solution is always ALL_BUILD. How do I change the startup project to the real project I want via CMake?


Solution 1:

CMake now supports this with versions 3.6 and higher through the VS_STARTUP_PROJECT directory property:

cmake_minimum_required(VERSION 3.6)
project(foo)
# ...

add_executable(bar ${BAR_SOURCES})
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT bar)

This will set bar as the startup project for the foo.sln solution.

Solution 2:

You can't. The startup-project is stored in a binary file, which is NOT generated by CMake. Without that binary file, visual studio will default to the first project in the solution file and the ALL_BUILD project is always first...

Update: this answer is "out-of-date" since it is now feasible with CMake 3.6. See the answer by ComicSansMS.