首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在qt5_add_binary_resources中使用CMake生成rcc文件

如何在qt5_add_binary_resources中使用CMake生成rcc文件
EN

Stack Overflow用户
提问于 2016-03-10 14:00:26
回答 1查看 2.2K关注 0票数 5

我正在尝试使用rcc 创建CMake文件

代码语言:javascript
复制
qt5_add_binary_resources(myApp "themes/redTheme.qrc" OPTIONS ARGS -binary)

由于我在CMakeLists文件中使用其他宏(如CMakeLists文件中的target),所以我得到了以下错误:

代码语言:javascript
复制
CMake Error at C:/Qt/5.5/msvc2013/lib/cmake/Qt5Core/Qt5CoreMacros.cmake:255 (add_custom_target):
  add_custom_target cannot create target
  "myApp" because another target with the
  same name already exists.  The existing target is an executable created in
  source directory [..]

注意,我的CMakeLists文件嵌套在根CMakeLists中。

编辑:I看了一下qt5_add_binary_resources宏的定义 (1.226)。最后一行是引发我错误的命令。它似乎什么也没做:

add_custom_target(${target} ALL DEPENDS ${rcc_destination})

我不明白为什么宏需要一个target

编辑:这里是我的CMakeLists.txt的内容,尽管出于清晰的原因而简化了。

代码语言:javascript
复制
CMAKE_MINIMUM_REQUIRED(VERSION 3.4)
CMAKE_POLICY(SET CMP0002 NEW)

PROJECT(myApp)

SET(RCC_EXECUTABLE ${CMAKE_PREFIX_PATH}/bin/rcc.exe)

# Find includes in corresponding build directories
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTORCC ON)

FIND_PACKAGE(Qt5Core 5.5.0 REQUIRED)
FIND_PACKAGE(Qt5Widgets 5.5.0 REQUIRED)
FIND_PACKAGE(Qt5Qml 5.5.0 REQUIRED)
FIND_PACKAGE(Qt5Quick 5.5.0 REQUIRED)

INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIRS})
# etc.

SET(myApp_LIBRARIES
    ${BOOST_THREAD_LIBRARIES}
    ${BOOSTALL_LIBRARIES}
    Qt5::Core
    Qt5::Widgets
    Qt5::Qml
    Qt5::Quick
)

SET(myApp_LIBRARIES
        ${myApp_LIBRARIES}
)

SET(myApp_SOURCES
    source/main.cpp
)

SET(myApp_RESOURCES
    resources/qml.qrc
)

SET(myApp_EXTERNAL_BINARY_RESOURCES
    themes/redTheme.qrc
    themes/blueTheme.qrc
)

ADD_EXECUTABLE(myApp WIN32
        ${myApp_SOURCES} ${myApp_RESOURCES}
)

FOREACH(_qrc_file ${myApp_EXTERNAL_BINARY_RESOURCES})
    STRING(REPLACE "qrc" "rcc" _rcc_file ${_qrc_file})
    # This is where I'd like to create my binary resources
    # QT5_ADD_BINARY_RESOURCES("test.rcc" ${_qrc_file})
    # Current working process, but not clean
    EXECUTE_PROCESS(COMMAND ${RCC_EXECUTABLE} -binary ${CMAKE_CURRENT_SOURCE_DIR}/${_qrc_file} -o ${CMAKE_CURRENT_SOURCE_DIR}/${_rcc_file})
ENDFOREACH()

根据这个文件,我试图生成两个rcc文件:redTheme.rccblueTheme.rcc

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 19:51:59

顺便说一下..。您不需要传递"OPTIONS ARGS -binary“,因为它已经定义为二进制。您需要传递一个目标名称,因为您可以调用"make“来手动生成rcc文件。此外,rcc文件将由"all“目标生成,如果您将其作为依赖项添加到另一个add_dependeny目标中。rcc文件不会在cmake配置时生成,而是在编译时生成。此外,如果文件更改,它将被重新生成。

因此,您需要传递一个未使用的目标名称,因为错误告诉您!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35918589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档