Qt Creator : how to embed custom manifest in . exe

标签 qt cmake

我有一个自定义 list 文件,并希望将其嵌入到可执行文件中。我使用 MS Visual Studio 2010 编译器和 Qt 5.2.1。

我使用 Qt Creator 作为 IDE,使用 CMake 进行发布版本。
我应该在 .pro 和 CMake 文件中设置哪些选项?

我试图将 '/MANIFEST...' 之类的标志传递给链接器,但 VS 2010 链接器似乎不支持它们。

最佳答案

最终我找到了解决方案。

首先,需要将以下行添加到 .pro 文件中:

CONFIG -= embed_manifest_exe

这将禁用默认 list 文件的嵌入。之后需要添加一个windows资源文件:
RC_FILE = app_resources.rc

通常包含 .rc 文件以将版本信息嵌入到 .exe 中,但是只要 list 也是可执行资源的一部分,我们就可以在其中引用自定义 list 文件,只需将以下行添加到 app_resources.rc 中:
1 24 myapp.exe.manifest

其中 1 是资源 ID,24 是资源类型 - RT_MANIFEST,而 myapp.exe.manifest 是包含我们自定义 list 的文件。
如果您不需要版本信息,那么 app_resources.rc 可能只包含这一行。

就是这样。

对于 CMake,步骤如下:

1) 在目标源列表中包含 app_resources.rc

2) 添加以下行以禁用默认 list 文件的嵌入:
set(CMAKE_EXE_LINKER_FLAGS "/MANIFEST:NO")

由于一些我不知道的原因/MANIFEST:NO 在 .pro 文件中不起作用。链接器因未知选项错误而失败。但是它在 CMake 中有效。链接器与 VS 2010 相同...

关于Qt Creator : how to embed custom manifest in . exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40292916/

相关文章:

c++ - 使用巨大的 Valgrind 和低级 C++ API

Qt Lite 和 Qt 5.8 中的配置更改

cmake - 设置 CMake 构建中的线程数

makefile - 如何停止 CMake 附加 C 编译器标志

c++ - 根据c++头文件和cmake命令分配输出名称

c++ - 从另一个 CMakeLists.txt 将变量读入 cmake

c++ - dpkg-shlibdeps : error: no dependecy information found

c++ - 带显示控制台的 QProcess STDIN

c++ - 模板方法何时可以使用稍后定义的函数,而无需前向声明?

java - 正确设置 JAVA_HOME 后 Cmake 找不到 JNI