2017-06-24 52 views
0

我在使用CMake访问VS 2017项目中的qt资源文件时遇到问题。我能够使用Qt Creator访问qrc文件。我有以下问题:使用CMake访问VS 2017中的Qt资源文件

  • 我在哪里放资源文件?最好我想把资源文件放在根目录下。我曾尝试将这些文件放入根目录中,并将其放入目录中。
  • 我应该对CMakeLists.txt文件做出什么改变?
  • 我该如何参考资源文件?我尝试了所有可以在互联网上找到的指令。但他们似乎都没有工作。例如,我试过:“/前缀/文件路径/文件名”或“:前缀/文件路径/文件名”。

非常感谢!

回答

0

你可以把你的.qrc文件放在你想要的位置,对于我的项目我可以在/res文件夹中做,但是你可以选择。您可以在资源上添加文件,手动编辑.qrc文件作为正常的xml文件。这里一个简单的例子:

<RCC> 
    <qresource prefix="/menu_img"> 
     <file alias="cancel_img">icons/cancel-512.png</file> 
     <file alias="open_img">icons/folder-512.png</file> 
     <file alias="print_img">icons/printer-512.png</file> 
    </qresource> 
</RCC> 

在这个资源文件的图像文件夹icons内,.qrc在外面。

.qrc文件已准备就绪(假设你使用QT5),你必须添加到您的CMakeList.txt这一行后:

qt5_add_resources(PROJECT_RESOURCE path_to_rosource_file/resources.qrc)

然后对你的目标,你必须添加此rosource:

add_executable(
    ${TARGET_PROJECT} 
    ${PROJECT_SOURCES} 
    ${PROJECT_HEADERS} 
    ${PROJECT_RESOURCES}) 

现在你的资源是可用的项目照常:/menu_img/cancel_img

+0

T内详细解释很多。在将resources.qrc添加到PROJECT_RESOURCE后,CMake会自动将文件名从resource.qrc更改为qrc_resources.cpp。然后它说它找不到该文件。你能帮我理解为什么吗? – DavidY

+0

创建文件“qrc_resources.cpp”是非常正常的(这是Qt向你的二进制目标添加资源的方式)奇怪的是,这个文件是在同一个文件夹中创建的,与其他文件一样。这表明你不正确地使用CMake。例如,所有的CMake临时文件应该在另一个目录“build”上创建,以避免弄脏你的项目根目录。 – Elia

+0

我对此感到抱歉。我试图说CMake期望生成文件夹中的.cpp文件,但无法找到它。我搜索了构建文件夹并找到了一些扩展名为“.depends”的文件。但是我没有找到qrc的.cpp文件。我已经将CMAKE_AUTORCC设置为打开。 – DavidY