|
@@ -4,171 +4,164 @@
|
|
|
function(find_plus INVAL OUTVAL)
|
|
|
string(FIND "${INVAL}" "+" plus_index)
|
|
|
set(${OUTVAL} ${plus_index} PARENT_SCOPE)
|
|
|
- # if(plus_index LESS 0)
|
|
|
- # set(${OUTVAL} -1 PARENT_SCOPE)
|
|
|
- # else()
|
|
|
- # set(${OUTVAL} ${plus_index} PARENT_SCOPE)
|
|
|
- # endif(plus_index LESS 0)
|
|
|
endfunction(find_plus INVAL OUTVAL)
|
|
|
|
|
|
-# find_plus("FF" FFFF)
|
|
|
-# message("--> FFFF ${FFFF}") # --> FFFF -1
|
|
|
-# find_plus("F+F" FFFF)
|
|
|
-# message("--> FFFF ${FFFF}") # --> FFFF 1
|
|
|
-# find_plus("+F+F" FFFF)
|
|
|
-# message("--> FFFF ${FFFF}") # --> FFFF 0
|
|
|
-
|
|
|
-# set(FFF)
|
|
|
-# list(APPEND FFFF )
|
|
|
-# list(APPEND FFFF "F")
|
|
|
-# list(APPEND FFFF "FA")
|
|
|
-# message("--> FFFF: ${FFFF}") # --> FFFF: F;FA
|
|
|
-
|
|
|
-# set(FFFFS "")
|
|
|
-# list(APPEND FFFFS ${FFFF})
|
|
|
-# message("--> FFFFS: ${FFFFS}") # --> FFFFS: F;FA
|
|
|
-
|
|
|
-# set(FFFF "+AA+BB+CC+DD")
|
|
|
-# string(REPLACE "+" ";" FFFFL "${FFFF}")
|
|
|
-# list(LENGTH FFFFL FFFFLEN)
|
|
|
-# message("--> FFFFL: ${FFFFL} --> ${FFFFLEN}") # --> FFFFL: F;
|
|
|
-
|
|
|
-# plus_list
|
|
|
-# 将传入的 "+AAA+BBB+CCC" 类型数据变成一个 列表(list)
|
|
|
-# 适用于不使用 string 进行替换 + 为 ";" 的情况下使用直接变成 list
|
|
|
-function(plus_list INVAL OUTVAL OUTVALLEN)
|
|
|
- # set(${OUTVAL} "..." PARENT_SCOPE)
|
|
|
- # set(${OUTVALLEN} 0 PARENT_SCOPE)
|
|
|
-
|
|
|
- set(_tmps "") # 设置为空的
|
|
|
-
|
|
|
- # 寻找下一个 + 位置
|
|
|
- find_plus(${INVAL} RIGHT_PLUS)
|
|
|
-
|
|
|
- string(LENGTH "${INVAL}" INVALLEN)
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> 内容: ${INVAL}")
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> 长度: ${INVALLEN}")
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> +位置: ${RIGHT_PLUS}")
|
|
|
-
|
|
|
- # 判断是否有右侧 + 号
|
|
|
- if(RIGHT_PLUS LESS 0)
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> 无需计算新的+位置")
|
|
|
- # spark_debug_message("--> 计算新的 + 位置: ${_PLUSINDEX}")
|
|
|
- list(APPEND _tmps ${INVAL})
|
|
|
- else()
|
|
|
- math(EXPR _PLUSINDEX "${RIGHT_PLUS}+1")
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> 需计算+位置 --> 右移: ${_PLUSINDEX}")
|
|
|
-
|
|
|
- string(SUBSTRING "${INVAL}" ${_PLUSINDEX} ${INVALLEN} NewVal)
|
|
|
- spark_debug_message("--> 传入的 INVAL: --> 需计算+位置 --> 右移: ${_PLUSINDEX} -> 内容: ${NewVal}")
|
|
|
- # string(REPLACE "+" ";" _tmps "${NewVal}")
|
|
|
- # list(LENGTH FFFFL FFFFLEN)
|
|
|
-
|
|
|
- # spark_debug_message("--> 计算新的 + 位置: ${_PLUSINDEX} --> 后面的 NewVal: ${NewVal}")
|
|
|
-
|
|
|
- # find_plus(${NewVal} _NextPlus)
|
|
|
- # if(_NextPlus LESS 0)
|
|
|
- # list(APPEND _tmps ${NewVal})
|
|
|
- # spark_debug_message("--> 追加新的 + 位置: ${_PLUSINDEX} --> 后面的")
|
|
|
- # else()
|
|
|
- # spark_debug_message("--> 追加新的 + 位置: ${_PLUSINDEX} --> 后面的")
|
|
|
- # # 重新
|
|
|
- # # plus_list(${NewVal} NewValS )
|
|
|
- # # foreach(item)
|
|
|
- # # list(APPEND _tmps ${item})
|
|
|
- # # endforeach(item)
|
|
|
- # endif(_NextPlus LESS 0)
|
|
|
- endif(RIGHT_PLUS LESS 0)
|
|
|
-
|
|
|
- set(${OUTVAL} ${_tmps} PARENT_SCOPE)
|
|
|
- list(LENGTH _tmps _tmps_len)
|
|
|
- set(${OUTVALLEN} ${_tmps_len} PARENT_SCOPE)
|
|
|
-
|
|
|
-endfunction(plus_list INVAL OUTVAL OUTVALLEN)
|
|
|
-
|
|
|
-# plus_list("+AAA+BBB+CCC+DDD" FFF FFLEN)
|
|
|
-# spark_debug_message("--------> ${FFF}: -> ${FFLEN}")
|
|
|
+function(find_plus_v INVAL OUTVAL)
|
|
|
+ string(FIND "${${INVAL}}" "+" plus_index)
|
|
|
+ set(${OUTVAL} ${plus_index} PARENT_SCOPE)
|
|
|
+endfunction(find_plus_v INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_colon INVAL OUTVAL)
|
|
|
+ string(FIND "${INVAL}" ":" colon_index)
|
|
|
+ set(${OUTVAL} ${colon_index} PARENT_SCOPE)
|
|
|
+endfunction(find_colon INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_colon_v INVAL OUTVAL)
|
|
|
+ string(FIND "${${INVAL}}" ":" colon_index)
|
|
|
+ set(${OUTVAL} ${colon_index} PARENT_SCOPE)
|
|
|
+endfunction(find_colon_v INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_dir INVAL OUTVAL)
|
|
|
+ string(FIND "${INVAL}" "/" _STR ${ARGN})
|
|
|
+ set(${OUTVAL} ${_STR} PARENT_SCOPE)
|
|
|
+endfunction(find_dir INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_dir_v INVAL OUTVAL)
|
|
|
+ string(FIND "${${INVAL}}" "/" _STR ${ARGN})
|
|
|
+ set(${OUTVAL} ${_STR} PARENT_SCOPE)
|
|
|
+endfunction(find_dir_v INVAL OUTVAL)
|
|
|
+
|
|
|
+#
|
|
|
+function(str_left INVAL INDEX OUTVAL)
|
|
|
+ set(LEFT_INDEX ${INDEX})
|
|
|
+ string(SUBSTRING "${INVAL}" 0 ${LEFT_INDEX} _LEFT_V)
|
|
|
+ set(${OUTVAL} ${_LEFT_V} PARENT_SCOPE)
|
|
|
+endfunction(str_left INVAL INDEX OUTVAL)
|
|
|
+
|
|
|
+function(str_right INVAL INDEX OUTVAL)
|
|
|
+ math(EXPR RIGHT_INDEX ${INDEX}+1)
|
|
|
+ string(SUBSTRING "${INVAL}" ${RIGHT_INDEX} -1 _RIGHT_V)
|
|
|
+ set(${OUTVAL} ${_RIGHT_V} PARENT_SCOPE)
|
|
|
+endfunction(str_right INVAL INDEX OUTVAL)
|
|
|
+
|
|
|
+function(str_left_v INVAL INDEX OUTVAL)
|
|
|
+ set(LEFT_INDEX ${${INDEX}})
|
|
|
+ string(SUBSTRING "${${INVAL}}" 0 ${LEFT_INDEX} _LEFT_V)
|
|
|
+ set(${OUTVAL} ${_LEFT_V} PARENT_SCOPE)
|
|
|
+endfunction(str_left_v INVAL INDEX OUTVAL)
|
|
|
+
|
|
|
+function(str_right_v INVAL INDEX OUTVAL)
|
|
|
+ math(EXPR RIGHT_INDEX ${${INDEX}}+1)
|
|
|
+ string(SUBSTRING "${${INVAL}}" ${RIGHT_INDEX} -1 _RIGHT_V)
|
|
|
+ set(${OUTVAL} ${_RIGHT_V} PARENT_SCOPE)
|
|
|
+endfunction(str_right_v INVAL INDEX OUTVAL)
|
|
|
+
|
|
|
+#
|
|
|
+function(find_colon_plus INVAL OUTVAL)
|
|
|
+ find_colon(${INVAL} COLON_INDEX)
|
|
|
+ str_right(${INVAL} ${COLON_INDEX} COLON_RIGHT)
|
|
|
+ find_plus_v(COLON_RIGHT PLUS_INDEX)
|
|
|
+ str_left_v(COLON_RIGHT PLUS_INDEX COLON_RIGHT_LEFT_PLUS)
|
|
|
+
|
|
|
+ set(${OUTVAL} ${COLON_RIGHT_LEFT_PLUS} PARENT_SCOPE)
|
|
|
+endfunction(find_colon_plus INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_colon_plus_v INVAL OUTVAL)
|
|
|
+ find_colon_v(${INVAL} COLON_INDEX)
|
|
|
+ str_right_v(${INVAL} COLON_INDEX COLON_RIGHT)
|
|
|
+ find_plus_v(COLON_RIGHT PLUS_INDEX)
|
|
|
+ str_left_v(COLON_RIGHT PLUS_INDEX COLON_RIGHT_LEFT_PLUS)
|
|
|
+
|
|
|
+ set(${OUTVAL} ${COLON_RIGHT_LEFT_PLUS} PARENT_SCOPE)
|
|
|
+endfunction(find_colon_plus_v INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_dir_plus INVAL OUTVAL)
|
|
|
+ # t:*/*+d
|
|
|
+ # ^
|
|
|
+ find_dir("${INVAL}" SLASH_INDEX REVERSE)
|
|
|
+ str_right("${INVAL}" ${SLASH_INDEX} SLASH_RIGHT)
|
|
|
+ find_plus_v(SLASH_RIGHT PLUS_INDEX)
|
|
|
+ str_left_v(SLASH_RIGHT PLUS_INDEX SLASH_RIGHT_LEFT_PLUS)
|
|
|
+
|
|
|
+ set(${OUTVAL} ${SLASH_RIGHT_LEFT_PLUS} PARENT_SCOPE)
|
|
|
+endfunction(find_dir_plus INVAL OUTVAL)
|
|
|
+
|
|
|
+function(find_dir_plus_v INVAL OUTVAL)
|
|
|
+ # t:*/*+d
|
|
|
+ # ^
|
|
|
+ find_dir("${${INVAL}}" SLASH_INDEX REVERSE)
|
|
|
+ str_right("${${INVAL}}" ${SLASH_INDEX} SLASH_RIGHT)
|
|
|
+ find_plus_v(SLASH_RIGHT PLUS_INDEX)
|
|
|
+ str_left_v(SLASH_RIGHT PLUS_INDEX SLASH_RIGHT_LEFT_PLUS)
|
|
|
+
|
|
|
+ set(${OUTVAL} ${SLASH_RIGHT_LEFT_PLUS} PARENT_SCOPE)
|
|
|
+endfunction(find_dir_plus_v INVAL OUTVAL)
|
|
|
+
|
|
|
+
|
|
|
+# spark_add_library_source <target> ...
|
|
|
+# 扩展 一行一可执行目标 的构建的扩展宏
|
|
|
+# 在构建时将会另外加入这些资源
|
|
|
+macro(spark_add_library_source target)
|
|
|
+ set(${target}_ADD_SOURCE ${ARGN})
|
|
|
+endmacro(spark_add_library_source target)
|
|
|
+
|
|
|
+# 冗余的 target_link_qt5 或 qt6 的处理逻辑
|
|
|
+macro(_handle_spark_target_link_qt_macro _target)
|
|
|
+ if(SPARK_FIND_QT5)
|
|
|
+ target_link_qt5(${_target})
|
|
|
+ endif(SPARK_FIND_QT5)
|
|
|
+
|
|
|
+ if(SPARK_FIND_QT6)
|
|
|
+ target_link_qt6(${_target})
|
|
|
+ endif(SPARK_FIND_QT6)
|
|
|
+endmacro(_handle_spark_target_link_qt_macro _target)
|
|
|
|
|
|
# spark_add_library_realpaths
|
|
|
# 基于传入的项进行构建
|
|
|
# 可接受的值为: 路径列表
|
|
|
# 可接受的值为: 路径列表+依赖库A+依赖库B
|
|
|
macro(spark_add_library_realpaths)
|
|
|
- spark_debug_message("---> 基于传入的项进行构建 <---")
|
|
|
- # spark_debug_message("--> src/unclassified/ItemDelegates/NdStyledItemDelegate")
|
|
|
- # string(FIND <string> <substring> <output_variable> [REVERSE])
|
|
|
- # string(SUBSTRING <string> <begin> <length> <output_variable>)
|
|
|
- # math(EXPR value "100 * 0xA" OUTPUT_FORMAT DECIMAL) # value is set to "1000"
|
|
|
|
|
|
set(REALPATHS ${ARGN})
|
|
|
foreach(REALPATH IN LISTS REALPATHS)
|
|
|
- spark_debug_message("---> 传入路径: ${REALPATH} <--- ")
|
|
|
- string(LENGTH "${REALPATH}" REALPATH_LENGTH)
|
|
|
- spark_debug_message("---> 计算传入路径长度: --> 长度: ${REALPATH_LENGTH}")
|
|
|
-
|
|
|
- string(FIND "${REALPATH}" "/" LASTINDEX REVERSE)
|
|
|
- spark_debug_message("---> 计算传入路径末尾/位置: --> 长度: ${LASTINDEX}")
|
|
|
- math(EXPR LASTINDEX "${LASTINDEX}+1")
|
|
|
- spark_debug_message("---> 计算传入路径末尾/右移: --> 长度: ${LASTINDEX}")
|
|
|
- string(SUBSTRING "${REALPATH}" ${LASTINDEX} ${REALPATH_LENGTH} REALNAME_Dependency)
|
|
|
|
|
|
+ # # 找 : 号下标,这是找:号的函数
|
|
|
+ # find_colon(${REALPATH} COLON_INDEX)
|
|
|
+ # 找 / 号下标,这是找/号的函数
|
|
|
+ find_dir_v(REALPATH SLASH_INDEX REVERSE)
|
|
|
# 找 + 号下标,这是找+号的函数
|
|
|
- find_plus(${REALPATH} RIGHT_PLUS)
|
|
|
-
|
|
|
- # 判断是否有找到 + 号下标,值为 -1 或 正整数
|
|
|
- if(RIGHT_PLUS LESS 0) # 小于0: 不存在 + 号
|
|
|
- set(REALNAME "${REALNAME_Dependency}")
|
|
|
- spark_debug_message("---> 传入路径末尾/右移部分: --> ${REALNAME} <-- 无依赖+")
|
|
|
-
|
|
|
- spark_debug_message("---> 构建 ${REALNAME} -> ${REALNAME} ${REALPATH} ")
|
|
|
-
|
|
|
- spark_add_library_path(${REALNAME} ${REALPATH})
|
|
|
-
|
|
|
- if(SPARK_FIND_QT5)
|
|
|
- target_link_qt5(${REALNAME})
|
|
|
- endif(SPARK_FIND_QT5)
|
|
|
-
|
|
|
- if(SPARK_FIND_QT6)
|
|
|
- target_link_qt6(${REALNAME})
|
|
|
- endif(SPARK_FIND_QT6)
|
|
|
-
|
|
|
+ find_plus_v(REALPATH PLUS_INDEX)
|
|
|
+
|
|
|
+ # +
|
|
|
+ if(PLUS_INDEX LESS 0)
|
|
|
+ # 完全没有 + 的情况下,它就是一个基于目录的构建
|
|
|
+ set(dir ${REALPATH})
|
|
|
+ str_right_v(REALPATH SLASH_INDEX target)
|
|
|
+
|
|
|
+ spark_add_library_path(${target}
|
|
|
+ ${dir}
|
|
|
+ ${${target}_ADD_SOURCE}
|
|
|
+ )
|
|
|
+ # 使用 spark_add_library_realpaths 构建的依赖将允许直接引用库头文件
|
|
|
+ target_include_directories(${target} PUBLIC ${dir})
|
|
|
+ _handle_spark_target_link_qt_macro(${target})
|
|
|
else()
|
|
|
- spark_debug_message("---> 传入路径末尾/右移部分: --> ${REALNAME_Dependency} <-- 依赖+")
|
|
|
-
|
|
|
- # 存在+号,将截取从 / 到 + 号之间的内容作为目标名称
|
|
|
- # 例如 src/unclassified/widgets/DocTypeListView+JsonDeploy
|
|
|
- # ^(LASTINDEX) ^(RIGHT_PLUS)
|
|
|
- # 将 RIGHT_PLUS - LASTINDEX 计算出 DocTypeListView 字符长度
|
|
|
- math(EXPR REALNAME_LENGTH "${RIGHT_PLUS}-${LASTINDEX}")
|
|
|
-
|
|
|
- spark_debug_message("---> 计算传入路径末尾/右移部分: --> 位置: ${RIGHT_PLUS}")
|
|
|
- # spark_debug_message("---> 计算传入路径末尾/右移部分: --> 长度: ${REALNAME_Dependency}")
|
|
|
-
|
|
|
- # 目标名称为 DocTypeListView
|
|
|
- # 依赖为 JsonDeploy
|
|
|
- # set(REALNAME "")
|
|
|
- string(SUBSTRING "${REALPATH}" 0 ${RIGHT_PLUS} _REALPATH_DIR)
|
|
|
- string(SUBSTRING "${REALPATH}" ${LASTINDEX} ${REALNAME_LENGTH} REALNAME)
|
|
|
-
|
|
|
- spark_debug_message("---> 计算传入路径末尾/右移部分: --> 库名: ${REALNAME}")
|
|
|
-
|
|
|
- string(SUBSTRING "${REALPATH}" ${RIGHT_PLUS} ${REALPATH_LENGTH} Dependency)
|
|
|
- spark_debug_message("---> 计算传入路径末尾/右移部分: --> 库名: ${REALNAME} --> +部分: ${Dependency}")
|
|
|
-
|
|
|
- # plus_list(${Dependency} dependencies dependencies_len)
|
|
|
- string(REPLACE "+" ";" dependencies "${Dependency}")
|
|
|
- spark_debug_message("---> 计算传入路径末尾/右移部分: --> 库名: ${REALNAME} --> +部分: ${Dependency} --> 列表: ${dependencies} <-- ")
|
|
|
-
|
|
|
-
|
|
|
- spark_debug_message("---> 构建 ${REALNAME} -> ${REALNAME} ${_REALPATH_DIR}")
|
|
|
+ # 有 + 的情况下,获取 + 号下标右侧所有内容为 target_depends_str 并转为列表
|
|
|
+ str_right_v(REALPATH PLUS_INDEX target_depends_str)
|
|
|
+ string(REPLACE "+" ";" target_depends "${target_depends_str}")
|
|
|
+
|
|
|
+ find_dir_plus_v(REALPATH target)
|
|
|
+ str_left_v(REALPATH PLUS_INDEX dir)
|
|
|
+
|
|
|
+ spark_add_library_path(${target}
|
|
|
+ ${dir}
|
|
|
+ ${${target}_ADD_SOURCE}
|
|
|
+ )
|
|
|
+ spark_debug_message(" [INCLUDE_DIRS]: ${dir} ${dir}/.. \n")
|
|
|
+ target_include_directories(${target} PUBLIC ${dir} ${dir}/..)
|
|
|
+ target_link_libraries(${target} ${target_depends})
|
|
|
+ endif(PLUS_INDEX LESS 0)
|
|
|
|
|
|
- spark_add_library_path(${REALNAME} ${_REALPATH_DIR})
|
|
|
- # target_link_qt5(${REALNAME}) # 使用依赖的依赖或许也不错
|
|
|
-
|
|
|
- target_include_directories(${REALNAME} PUBLIC ${_REALPATH_DIR})
|
|
|
- target_link_libraries(${REALNAME} ${dependencies})
|
|
|
-
|
|
|
- endif(RIGHT_PLUS LESS 0)
|
|
|
endforeach(REALPATH IN LISTS REALPATHS)
|
|
|
|
|
|
endmacro(spark_add_library_realpaths)
|
|
@@ -188,6 +181,7 @@ macro(spark_aux_source_paths AUX_VAR)
|
|
|
endmacro(spark_aux_source_paths AUX_VAR)
|
|
|
|
|
|
# spark_file_glob
|
|
|
+# 使用用 file(GLOB) 的匹配规则,并一次可匹配多个规则
|
|
|
#
|
|
|
macro(spark_file_glob FGLOB_VAR)
|
|
|
set(${FGLOB_VAR} "")
|
|
@@ -235,3 +229,107 @@ macro(spark_add_source_paths SOURCE_VAR)
|
|
|
endforeach(ui_src IN LISTS UI_SRCS)
|
|
|
endforeach(source_path IN LISTS ${SOURCE_VAR}_PATHS)
|
|
|
endmacro(spark_add_source_paths SOURCE_VAR)
|
|
|
+
|
|
|
+
|
|
|
+# spark_add_library_file_glob
|
|
|
+ #
|
|
|
+macro(spark_add_library_file_glob _lib_name)
|
|
|
+ spark_file_glob(${_lib_name}_SOURCES ${ARGN})
|
|
|
+ spark_add_library(${_lib_name} ${${_lib_name}_SOURCES})
|
|
|
+endmacro(spark_add_library_file_glob _lib_name)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# spark_add_executable_source <target> ...
|
|
|
+# 扩展 一行一可执行目标 的构建的扩展宏
|
|
|
+# 在构建时将会另外加入这些资源
|
|
|
+macro(spark_add_executable_source target)
|
|
|
+ set(${target}_ADD_SOURCE ${ARGN})
|
|
|
+endmacro(spark_add_executable_source target)
|
|
|
+
|
|
|
+# 冗余的 spark_add_executable_realpaths 的 dir 处理逻辑
|
|
|
+macro(_handle_spark_add_executable_realpaths_if_dir_empty_macro)
|
|
|
+ if("${dir}" STREQUAL "")
|
|
|
+ spark_add_executable(${target}
|
|
|
+ ${${target}_ADD_SOURCE}
|
|
|
+ )
|
|
|
+ else()
|
|
|
+ spark_add_executable_path(${target}
|
|
|
+ ${dir}
|
|
|
+ ${${target}_ADD_SOURCE}
|
|
|
+ )
|
|
|
+ endif("${dir}" STREQUAL "")
|
|
|
+endmacro(_handle_spark_add_executable_realpaths_if_dir_empty_macro)
|
|
|
+
|
|
|
+# spark_add_executable_realpaths
|
|
|
+# 基于传入的项进行构建
|
|
|
+# 可接受的值为: 可执行目标:路径列表
|
|
|
+# 可接受的值为: 可执行目标:路径列表+依赖库A+依赖库B
|
|
|
+macro(spark_add_executable_realpaths)
|
|
|
+
|
|
|
+ set(REALPATHS ${ARGN})
|
|
|
+ foreach(REALPATH IN LISTS REALPATHS)
|
|
|
+
|
|
|
+ # 找 : 号下标,这是找:号的函数
|
|
|
+ find_colon(${REALPATH} COLON_INDEX)
|
|
|
+
|
|
|
+ if(COLON_INDEX LESS 0)
|
|
|
+ # do not anything
|
|
|
+ else()
|
|
|
+ # 找到 : 号,将截取 target 名称
|
|
|
+ # string(SUBSTRING "${REALPATH}" 0 ${COLON_INDEX} REALTARGET)
|
|
|
+ find_colon_v(REALPATH COLON_INDEX)
|
|
|
+ str_left_v(REALPATH COLON_INDEX target)
|
|
|
+ str_right_v(REALPATH COLON_INDEX COLON_REMAIN)
|
|
|
+ # message(FATAL_ERROR "构建一个: ${target}") # 已验证
|
|
|
+
|
|
|
+ endif(COLON_INDEX LESS 0)
|
|
|
+
|
|
|
+ # 找 + 号下标,这是找+号的函数
|
|
|
+ find_plus_v(REALPATH PLUS_INDEX)
|
|
|
+
|
|
|
+ if(PLUS_INDEX LESS 0)
|
|
|
+ # 完全没有 + 的情况下,它就是一个基于目录的构建
|
|
|
+ set(dir ${COLON_REMAIN})
|
|
|
+ # spark_add_executable_path(${target}
|
|
|
+ # ${dir}
|
|
|
+ # ${${target}_ADD_SOURCE}
|
|
|
+ # )
|
|
|
+ _handle_spark_add_executable_realpaths_if_dir_empty_macro()
|
|
|
+ _handle_spark_target_link_qt_macro(${target})
|
|
|
+ else()
|
|
|
+ # 有 + 的情况下,获取 + 号下标右侧所有内容为 target_depends_str 并转为列表
|
|
|
+ str_right_v(REALPATH PLUS_INDEX target_depends_str)
|
|
|
+ string(REPLACE "+" ";" target_depends "${target_depends_str}")
|
|
|
+
|
|
|
+ # 再从主要内容中获取 dir ,以及
|
|
|
+ find_colon_plus_v(REALPATH dir)
|
|
|
+ # spark_add_executable_path(${target}
|
|
|
+ # ${dir}
|
|
|
+ # ${${target}_ADD_SOURCE}
|
|
|
+ # )
|
|
|
+ _handle_spark_add_executable_realpaths_if_dir_empty_macro()
|
|
|
+ target_include_directories(${target} PUBLIC ${dir} ${dir}/..)
|
|
|
+ target_link_libraries(${target} ${target_depends})
|
|
|
+ endif(PLUS_INDEX LESS 0)
|
|
|
+ endforeach(REALPATH IN LISTS REALPATHS)
|
|
|
+
|
|
|
+endmacro(spark_add_executable_realpaths)
|
|
|
+
|
|
|
+
|
|
|
+# 一行一库概念构建
|
|
|
+# 1.构建一个库,基于指定的目录路径进行构建
|
|
|
+# src/widgets/DocTypeListView
|
|
|
+# ^目录将被用于制作的目标名称
|
|
|
+# 目录下的所有文件将被用于制作此库的源代码文件
|
|
|
+#
|
|
|
+# 2.构建一个库,基于指定的目录路径进行构建,并依赖其后面所列出的依赖项
|
|
|
+# src/widgets/MaintainerInfoView+DocTypeListView+...
|
|
|
+# ^此库将被用于 MaintainerInfoView 库的依赖
|
|
|
+# ^此符号'+'将被视为依赖项列表的分隔符
|
|
|
+
|
|
|
+# 一行一可执行目标概念
|
|
|
+# 1.构建一个可执行目标,基于指定的目录路径进行构建(行不通,可执行目标很少为一个目录)
|
|
|
+# 2.构建一个可执行目标,基于指定的文件路径进行构建(也许可以)
|
|
|
+# 3.构建一个可执行目标,基于指定的文件名称进行构建()
|
|
|
+# 4.构建一个可执行目标,基于指定命名规则(target:dir:dir+depend+depend...)
|