本文主要是介绍vcpkg子包路径批量获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
获取vcpkg 子包的路径,并拼接为set(CMAKE_PREFIX_PATH “拼接路径” )
import osdef find_directories_with_subdirs(root_dir):# 构建根目录下的 "packages" 文件夹路径root_packages_dir = os.path.join(root_dir, "packages")# 如果 "packages" 目录不存在,则提前返回if not os.path.isdir(root_packages_dir):return# 初始化一个列表来存储所有匹配的目录路径matching_dirs = []# 定义要排除的目录名称集合exclude_dirs = {"detect_compiler_x64-windows", "vcpkg-cmake_x64-windows", "vcpkg-cmake-config_x64-windows"}# 定义要包含的子目录名称集合include_dirs = {"bin", "debug", "include", "lib"}# 遍历 "packages" 目录下的所有顶级条目for entry in os.listdir(root_packages_dir):# 构建每个顶级条目的完整路径entry_path = os.path.join(root_packages_dir, entry)# 如果当前条目是一个目录,并且不在排除列表中if os.path.isdir(entry_path) and entry not in exclude_dirs:# 将该顶级目录添加到匹配目录列表中matching_dirs.append(entry_path)# 遍历该顶级目录下的所有子目录for subentry in os.listdir(entry_path):# 构建子目录的完整路径subentry_path = os.path.join(entry_path, subentry)# 如果当前子目录存在,并且其名称在包含列表中if os.path.isdir(subentry_path) and subentry in include_dirs:# 将该子目录添加到匹配目录列表中matching_dirs.append(subentry_path)# 使用分号连接所有匹配的目录路径joined_paths = ';'.join(matching_dirs)# 按照 CMake 变量设置的格式输出结果print(f'set(CMAKE_PREFIX_PATH "{joined_paths}")')# 要开始遍历的根目录
root_directory = 'C:/Opensource/vcpkg-master'# 执行函数,找到包含所有指定子目录的目录并输出结果
find_directories_with_subdirs(root_directory)
这篇关于vcpkg子包路径批量获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!