# 自动寻找include_directories的目标
macro(GET_DIRECTORIES RESULT TARGET_DIR)
file(GLOB_RECURSE FILES "${TARGET_DIR}/*.hpp" "${TARGET_DIR}/*.h")
set(TEMP_RESULT "")
foreach(THE_FILE ${FILES})
string(REGEX REPLACE "(.*)/.*" "\\1" TEMP_DIR ${THE_FILE})
if(IS_DIRECTORY ${TEMP_DIR})
list(APPEND TEMP_RESULT ${TEMP_DIR})
endif()
endforeach(THE_FILE ${FILES})
list(REMOVE_DUPLICATES TEMP_RESULT)
set(${RESULT} ${TEMP_RESULT})
endmacro()
# 获取qml文件的名称
macro(GET_QML_FILE_NAME RESULT TARGET_DIR)
file(GLOB_RECURSE QML_FILE_NAMES_WITH_PATH "${TARGET_DIR}/*.qml")
set(TEMP_RESULT "")
foreach(QML_FILE_NAME ${QML_FILE_NAMES_WITH_PATH})
string(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" QML_FILE ${QML_FILE_NAME})
list(APPEND TEMP_RESULT ${QML_FILE})
endforeach(QML_FILE_NAME ${QML_FILE_NAMES_WITH_PATH})
list(REMOVE_DUPLICATES TEMP_RESULT)
set(${RESULT} ${TEMP_RESULT})
endmacro()
上面的两个函数的使用示例
GET_QML_FILE_NAME(QML_SRC_FILES "./qml/") # 获取所有qml文件
qt_add_qml_module(appXxxxx
URI AppXxxxx
VERSION 1.0
QML_FILES Main.qml ${QML_SRC_FILES}
)
本文由 CharSaMa's blog 创作,采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0)
授权。
- ✅ 允许行为:标注作者及原文出处,衍生内容需沿用相同协议
- ❌ 禁止行为:商业用途(包括广告、付费内容、商品推广等)
© 2025 CharSaMa's blog。协议全文:法律文本