在上一篇文章中,我们成功生成并执行了自己的HelloWorld,接下来将进一步完善其构建方法,使其更加方便更加自动化。同时也会介绍安装打包以及增加程序功能的方法。
本文涉及的代码已上传至github,后文会介绍使用方法。
设置CMakeLists中的变量来更改VS项目的默认设置
上篇文章结尾我们得到了一个有控制台窗口的HelloWorld程序。我们可以通过修改Visual Studio中的设置来隐藏控制台窗口。
也可以在CMakeLists.txt中添加如下内容达到相同效果:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
很多设置都可以通过在CMakeLists.txt中设置变量或者在执行cmake命令时添加参数来完成,如此便无需频繁的调整VS的设置。比如我们希望构建的VS项目默认编译64位的Release程序,可以在build目录下执行如下命令:
cmake -A x64 -DCMAKE_CONFIGURATION_TYPES=Release ..
其中 -A x64设置VS工程为64位,后面的参数用来设置编译模式为Release
编写build.bat
有没有觉得要输入那么长的命令很难记很麻烦?没关系,我们可以通过编写脚本文件来解决这个问题,在Windows中是.bat文件,通过编写和执行.bat文件,我们可以自动地执行一批命令。
在源代码根路径下编写build.bat如下:
@echo off
::delete build dir
if "%1"=="delete" goto _DEL
if not exist build md build
cd build
cmake -A x64 -DCMAKE_CONFIGURATION_TYPES=Release ..
cd ..
goto _END
:_DEL
rd build/s/q
goto _END
:_END
此后通过以下命令,便可以很方便的构建和删除项目了。
build.bat
build.bat delete
这里使用git bash时360会拦截,可以通过Windows控制台执行
制作安装包
我们可以通过CMake很方便的制作程序的安装包。
在Windows下我们可以通过NSIS软件来制作拥有安装界面的安装包(需要先安装NSIS),这种简单的程序也可以直接打包成.tar.gz,在其他电脑上解压即可使用,大概就是免安装绿色硬盘版吧 ^_^单就这个程序来说两种包差别不大,在代码中也仅仅是一个变量值的区别。
如果要制作NSIS包,设置
set(CPACK_GENERATOR NSIS)
制作tar.gz,只需设置
set(CPACK_GENERATOR TGZ)
主要利用的是install命令和CPack模块。
在CMakeLists.txt中添加如下代码:
set(CMAKE_INSTALL_PREFIX ${
PROJECT_BINARY_DIR}/installed)
set(WINDEPLOYQT_DIR F:/QT/5.10.1/msvc2017_64/bin)
#exec windeployqt automatically when build install in VS
install(CODE "execute_process(COMMAND ${
WINDEPLOYQT_DIR}/windeployqt.exe
${
PROJECT_BINARY_DIR}/Release/${
PROJECT_NAME}.exe)")
install(DIRECTORY ${
PROJECT_BINARY_DIR}/Release/ DESTINATION /)
set(CPACK_GENERATOR NSIS)
set(CPACK