62 lines
2.1 KiB
CMake
62 lines
2.1 KiB
CMake
|
|
function(retrieve_files_custom path extension out_files)
|
|
message(STATUS "Retrieving files in ${path}")
|
|
set(EXTENSIONS "")
|
|
foreach(ext ${extension})
|
|
list(APPEND EXTENSIONS "${path}/*.${ext}")
|
|
endforeach ()
|
|
|
|
# 递归查找文件夹下的 .h .hpp. ini 文件保存到 HEAD_FILES
|
|
file(GLOB_RECURSE FIND_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS ${EXTENSIONS})
|
|
# 将 HEDADER_FILES 和 SRC_FILES 保存到 ALL_FILES 变量
|
|
set(ALL_FILES ${FIND_FILES})
|
|
|
|
set(RESULT "")
|
|
|
|
# 对 ALL_FILES 变量里面的所有文件分类(保留资源管理器的目录结构)
|
|
foreach(fileItem ${ALL_FILES})
|
|
# Get the directory of the source file
|
|
get_filename_component(PARENT_DIR "${fileItem}" DIRECTORY)
|
|
|
|
# 用于检查平台的条件
|
|
if(PARENT_DIR STREQUAL "windows")
|
|
if(WIN32)
|
|
set(RESULT "${RESULT};${fileItem}")
|
|
else()
|
|
continue()
|
|
endif()
|
|
elseif(PARENT_DIR STREQUAL "linux")
|
|
if(UNIX AND NOT APPLE)
|
|
set(RESULT "${RESULT};${fileItem}")
|
|
else()
|
|
continue()
|
|
endif()
|
|
elseif(PARENT_DIR STREQUAL "mac")
|
|
if(APPLE)
|
|
set(RESULT "${RESULT};${fileItem}")
|
|
else()
|
|
continue()
|
|
endif()
|
|
else()
|
|
# 如果文件夹名称不是平台,则始终包含
|
|
set(RESULT "${RESULT};${fileItem}")
|
|
endif()
|
|
|
|
# Remove common directory prefix to make the group
|
|
string(REPLACE "${path}" "" GROUP "${PARENT_DIR}")
|
|
# Make sure we are using windows slashes
|
|
string(REPLACE "/" "\\" GROUP "${GROUP}")
|
|
# Group into "Source Files" and "Header Files"
|
|
set(GROUP "${GROUP}")
|
|
source_group("${GROUP}" FILES "${fileItem}")
|
|
endforeach()
|
|
|
|
set(${out_files} ${RESULT} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(retrieve_files path out_files)
|
|
set(temp_files "")
|
|
retrieve_files_custom(${path} "h;hpp;ini;cpp;c;ixx" temp_files)
|
|
set(${out_files} ${temp_files} PARENT_SCOPE)
|
|
endfunction()
|