因此,我发现了许多有关如何使用Visual Studio将清单添加到C ++可执行文件的说明,无论是否使用CMake。但是,似乎Internet上完全没有关于如何使用任何其他IDE来实现此目标的解释,尤其是当您使用CMake时。
由于我不熟悉清单,因此我几乎不知道自己在做什么错。到目前为止,这是清单中的内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0"
processorArchitecture="X86"
name="My_Executable"
type="win32"/>
<description>This is my executable.</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="true"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
(我要要求用户在启动应用程序时接受管理员权限。)
此文件称为“ My_Executable.final.manifest”,位于我的项目目录(“ CLionProjects / My_Executable /”)内。我使用Microsoft提供的this example创建了它,所以我假设语法很好。
根据this link,当将清单文件添加到可执行文件源时,CMake足够聪明,可以嵌入清单文件,因此我尝试了以下操作:
add_executable(My_Executable main.cpp My_Executable.final.manifest)
什么也不做(也没有错误消息),并按照建议的here添加此自定义命令:
add_custom_command(
TARGET My_Executable
POST_BUILD
COMMAND "mt.exe" -manifest \"${CMAKE_SOURCE_DIR}\\My_Executable.final.manifest\" -outputresource:"${CMAKE_BINARY_DIR}$(TargetFileName)"\;\#1
COMMENT "Adding manifest..."
)
之所以产生错误The system cannot find the file specified.
是因为mt.exe
与Visual Studio有关(例如VS)。
因此,我仍然不知道如何使用CLion将清单文件嵌入到我的应用程序中。非常感谢任何线索,因为我已经多次遇到这个问题,但从未能够解决它。
TL; DR:如何在使用CLion启动应用程序时将清单嵌入到CMake应用程序中,以提示用户输入管理员权限?