用 cmake
生成的工程默认启动的工程是 ALL_BUILD
。我们希望能指定默认启动的工程,不用每次打开 .sln
文件后再来设置。
这个在 cmake 3.6
之前是无法设置的。在 cmake 3.6
之后,通过设置 VS_STARTUP_PROJECT
属性来完成。
1. 核心设置语句
下面这句设置会把 HelloWorld
作为启动工程,而不是默认的 ALL_BUILD
工程。
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT HelloWorld)
VS_STARTUP_PROJECT
的官方说明:
https://cmake.org/cmake/help/latest/prop_dir/VS_STARTUP_PROJECT.html
2. 一个完整的例子
2.1 文件目录
├── CMakeLists.txt
├── generate_sln.bat
└── main.cpp
2.2 CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(HelloWorld)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${ORB_SLAM2_LIBS})
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME})
2.3 main.cpp
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
getchar();
return 0;
}
2.4 generate_sln.bat 脚本
执行 cmake ,生成 vs 工程,下面以生成 vs 2015 工程为例。
如果是其他 vs 版本, 则修改下面cmake -G "Visual Studio 14 Win64"
为自己的vs版本。
@echo off
setlocal
REM This script is used to generate vs2015 solution files
REM determine if camke exists
where cmake
if %errorlevel%==0 (
echo cmake found
) else (
echo cmake not found
goto exit_build
)
REM create build directory
set dir_name=build
if exist %dir_name% (
echo delete %dir_name%
rd /s/q %dir_name%
)
md %dir_name%
echo create %dir_name%
cd %dir_name%
REM cmake
cmake -G "Visual Studio 14 Win64" ..
if %errorlevel%==0 (
echo.
echo.
echo solution is generated in the %dir_name%
echo.
echo.
) else (
echo.
echo.
echo solution generating is failed!!! Please fix the problem before cmake.
echo.
echo.
goto exit_build
)
:build_success
pause
exit /b 0
:exit_build
pause
exit /b 1
2.5 生成工程、打开后的效果
双击 generate_sln.bat
,则会在build
文件夹下生成 HelloWorld.sln
。
打开后默认启动工程如下,默认的启动工程为 HelloWorld
,不再是 ALL_BUILD
工程:

网友评论