美文网首页
cmake 设置 vs 的默认启动工程,不再是 ALL_BUIL

cmake 设置 vs 的默认启动工程,不再是 ALL_BUIL

作者: book_02 | 来源:发表于2021-06-08 08:52 被阅读0次

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 工程:

相关文章

网友评论

      本文标题:cmake 设置 vs 的默认启动工程,不再是 ALL_BUIL

      本文链接:https://www.haomeiwen.com/subject/qbhosltx.html