1、设置程序以管理员的方式启动
SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /level='requireAdministrator' /uiAccess='false'" )
2、解决CMP0020警告
根据官方文档的解释,如下:
CMP0020
Automatically link Qt executables to qtmain target on Windows. CMake 2.8.10 and lower required users of Qt to always specify a link dependency to the qtmain.lib static library manually on Windows. CMake 2.8.11 gained the ability to evaluate generator expressions while determining the link dependencies from IMPORTED targets. This allows CMake itself to automatically link executables which link to Qt to the qtmain.lib library when using IMPORTED Qt targets. For applications already linking to qtmain.lib, this should have little impact. For applications which supply their own alternative WinMain implementation and for applications which use the QAxServer library, this automatic linking will need to be disabled as per the documentation. The OLD behavior for this policy is not to link executables to qtmain.lib automatically when they link to the QtCore IMPORTED- target. The NEW behavior for this policy is to link executables to qtmain.lib automatically when they link to QtCore IMPORTED target. This policy was introduced in CMake version 2.8.11. CMake ver- sion 2.8.12.1 warns when the policy is not set and uses OLD behavior. Use the cmake_policy command to set it to OLD or NEW explicitly.
方法1:CMAKE_POLICY(SET CMP0020 NEW)
方法2:修改CMakeLists.txt文件,设置cmake的最低版本要求,至少为2.8.11
3、对于Qt程序,error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
这是在设置子系统为窗口 (/SUBSYSTEM:WINDOWS)才会出现,正是由于没有采用新的行为,即没有自动链接qtmain.lib。解决的办法可以用《解决CMP0020警告》的方法,也可以手动的链接该lib库.