Всем доброго времени.
В данном контексте речь идет о Windows && QMake.
Недавно понадобилось добавить возможность чтобы приложение при своем запуске
требовало права администратора. Как известно, для этой цели нужно использовать
специальные манифест-файлы или добавлять дополнительные опции в QMAKE_LFLAGS.
В гугле много решений на этот счет, но все они сумбурные и разнотипные (для
разных компиляторов VS или MINGW) решения могут бфть разные.
Так вот, чтобы не утруждать себя написанием всяких платформо-специфичных "дефайнов"
в *.pro файле и не городить огород делаем так:
= app-uac.pro =
QT += core
QT -= gui
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
CONFIG -= embed_manifest_exe
RC_FILE = app-uac.rc
= app-uac.rc =
#ifndef RT_MANIFEST
#define RT_MANIFEST 24
#endif
#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#endif
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "app-uac.exe.manifest"
= app-uac.exe.manifest =
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
= main.cpp =
#include <QCoreApplication>
#include <iostream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
std::cout << "Hello";
return a.exec();
}
Все это перекомпиливаем и.. вуаля.. можно не бояться переключать комплекты с MINGW на MSVC и наоборот..