gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:41:08 25 4
gpt4 key购买 nike

我正在尝试创建 rcc带有 CMake 的文件,使用 qt5_add_binary_resources(target inputfile ... OPTIONS ... DESTINATION ...) macro :

qt5_add_binary_resources(myApp "themes/redTheme.qrc" OPTIONS ARGS -binary)

由于我正在使用其他宏,例如 add_executable在我的 CMakeLists文件(要求输入 target ),我收到以下错误:
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 .

编辑:我看了一下 definition (l.226) 的 qt5_add_binary_resources宏。最后一行是引起我错误的命令。它似乎没有做任何事情:
add_custom_target(${target} ALL DEPENDS ${rcc_destination})
我不明白为什么宏需要一个 target ?

编辑:这是我的 CMakeLists.txt 的内容,虽然为了清晰起见进行了简化。
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 .

最佳答案

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

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

关于qt - 如何在CMake中使用qt5_add_binary_resources生成rcc文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com