Cmake 将文件依赖项添加到自定义目标
我想设置CMake,以便在.qrc文件中引用的文件内容发生更改时构建qresource文件。例如,我有一些qml文件打包到qrc文件中,如果qml文件发生更改,则需要重新编译qrc 我有下面的宏来运行资源编译器,但它只会在资源文件本身发生更改时重建它Cmake 将文件依赖项添加到自定义目标,cmake,Cmake,我想设置CMake,以便在.qrc文件中引用的文件内容发生更改时构建qresource文件。例如,我有一些qml文件打包到qrc文件中,如果qml文件发生更改,则需要重新编译qrc 我有下面的宏来运行资源编译器,但它只会在资源文件本身发生更改时重建它 MACRO(PYQT5_WRAP_RC outfiles) FOREACH(it ${ARGN}) GET_FILENAME_COMPONENT(outfile ${it} NAME_WE) GET_FILENAME_COMPO
MACRO(PYQT5_WRAP_RC outfiles)
FOREACH(it ${ARGN})
GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
SET(outfile ${CMAKE_CURRENT_SOURCE_DIR}/${outfile}_rc.py)
ADD_CUSTOM_TARGET(${it} ALL
DEPENDS ${outfile}
)
ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
COMMAND ${PYRCC5BINARY} ${infile} -o ${outfile}
MAIN_DEPENDENCY ${infile}
)
SET(${outfiles} ${${outfiles}} ${outfile})
ENDFOREACH(it)
ENDMACRO (PYQT5_WRAP_RC)
宏的使用方式如下:
PYQT5_WRAP_RC(rc_gen file1.qrc file2.qrc ...)
如果qrc文件引用的某个文件发生更改,如何使其重新编译
我需要做些什么吗?在我看来,您正在寻找的命令是: 这定义了生成指定输出文件的命令。靶子 在同一目录(CMakeLists.txt文件)中创建,该目录指定 将自定义命令作为源文件的输出指定给 在生成时使用命令生成文件
正确配置依赖项,您应该能够在真正需要时重新编译文件。如果我正确理解您的情况,问题是CMake不知道qrc文件是什么,也不知道qrc文件引用了其他一些文件。这种依赖性对于CMake是隐式的(与C++比较包括;但是对于那些CMASE有特殊的机制来检测依赖性)。 因此,据我所知,您可以使用
add_custom_target
(始终执行),但不仅要将qrc文件添加到其依赖项,还要编写一些脚本,这些脚本可以检查qrc中引用的文件是否也是最新的,如果不是,请触摸qrc文件)
当然,您可以使用上面引用的另一个答案中的方法来接触qrc文件,但您必须开发自己的脚本来提取qrc文件中引用的文件路径。然后,您可以使用CMake脚本工具检查它们是否是最新的,并触摸qrc文件