news 2026/4/23 16:12:58

cmake_查找文件find_file()命令,查找程序find_program()与查找库find_library()

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
cmake_查找文件find_file()命令,查找程序find_program()与查找库find_library()

文章目录

  • 第二章 CMake基础语法
    • 2.16 CMake查找文件find_file()命令
      • 2.16.1 测试find_file搜索结果设置缓存变量
      • 2.16.2 给find_file指定目录
      • 2.16.3 给find_file指定路径和额外路径
    • 2.17 CMake查找程序find_program()与查找库find_library()
      • 2.17.1 find_program()
      • 2.17.2 find_library()

本文介绍CMake查找文件find_file()命令、查找程序find_program()与查找库find_library()。

第二章 CMake基础语法

2.16 CMake查找文件find_file()命令

CMake查找文件find_file()命令,默认从CMAKE_INCLUDE_PATH 路径中查找。
作用:使用find_file() 命令用于查找指定文件的完整路径。
语法格式:

find_file(<VAR>name1[path1 path2])<VAR>如果找到文件会将完整路径设置到VAR,否则为<VAR>-NOTFOUND NO_CACHE 若指定,结果则为普通变量,否则结果变量将被创建为缓存变量;REQUIRED 若没有找到任何内容,则停止处理并显示错误消息 NO_DEFAULT_PATH 若指定,表示不会去搜索额外的目录 NO_CMAKE_PATH:若指定,表示不会去搜索普通变量 CMAKE_PREFIX_PATH,CMAKE_INCLUDE_PATH,CMAKE_FRAMEWORK_PATH NO_CMAKE_ENVIRONMENT_PATH:若指定,表示不会去搜索环境变量 CMAKE_PREFIX_PATH,CMAKE_INCLUDE_PATH、CMAKE_FRAMEWORK_PATH

2.16.1 测试find_file搜索结果设置缓存变量

可以发现,find_file查找结果默认在缓存变量中;如果指定NO_CACHE之后,就不会设置为缓存变量了。

cmake_minimum_required(VERSION3.23)# 项目名字project(testFindFile)# 设置 find_file文件搜索路径:# CMAKE_SOURCE_DIR 顶层CMakeLists.txt 文件所在的目录.set(CMAKE_INCLUDE_PATH${CMAKE_SOURCE_DIR}/a)message("CMAKE_INCLUDE_PATH =${CMAKE_INCLUDE_PATH}")# CMAKE_INCLUDE_PATH = E:/cmakeLearning/chap2/11findfile/a# find_file 查找结果放在缓存变量中find_file(v1"a.h")message(普通变量 v1=${v1})# 普通变量v1=E:/cmakeLearning/chap2/11findfile/a/a.hmessage(缓存变量 v1=$CACHE{v1})# 缓存变量v1=E:/cmakeLearning/chap2/11findfile/a/a.hmessage("")# 查找没有的文件名find_file(v2"a.exe"NO_CACHE)message(普通变量 v2=${v2})# 普通变量v2=v2-NOTFOUNDmessage(缓存变量 V2=$CACHE{v2})# 缓存变量V2=

2.16.2 给find_file指定目录

find_file() 第三个参数指定搜索路径,下面分别演示了指定路径中文件存在和不存在的情况。

cmake_minimum_required(VERSION3.23)#查找文件 如果文件存在find_file(v1"a.h"${CMAKE_SOURCE_DIR}/a)message(普通变量 v1=${v1})# 指定文件所有路径find_file(v2"a.exe"${CMAKE_SOURCE_DIR}/a)message(普通变量 v2=${v2})# 查找文件find_file(v3"my.h")message(v3=${v3})#[[普通变量v1=E:/practice_Code/cmake/21findfile/a/a.h 普通变量v2=E:/practice_Code/cmake/21findfile/a/a.exev3=v3-NOTFOUND]]

2.16.3 给find_file指定路径和额外路径

CMAKE_INCLUDE_PATH普通变量给find_file指定目录,缓存CMAKE_INCLUDE_PATH给find_file 指定额外搜索目录。

#最低要求版本cmake_minimum_required(VERSION3.29)# 项目名字project(testFindFile)# 普通变量,搜索目录列表#set(CMAKE_INCLUDE_PATH ${CMAKE_SOURCE_DIR}/a)# 指定环境变量额外目录set(ENV{CMAKE_INCLUDE_PATH}${CMAKE_SOURCE_DIR}/a)message(普通变量CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH}")# 普通变量CMAKE_INCLUDE_PATH=message(环境变量CMAKE_INCLUDE_PATH=$ENV{CMAKE_INCLUDE_PATH})# 环境变量CMAKE_INCLUDE_PATH=E:/cmakeLearning/chap2/11findfile/a#查找文件find_file(v1"a.h")message(v1=${v1})# v1=E:/cmakeLearning/chap2/11findfile/a/a.h

2.17 CMake查找程序find_program()与查找库find_library()

2.17.1 find_program()

使用find_program()命令用于查找指定程序的完整路径。如果设置了CMAKE_LIBRARY_PATH,会去该目录下寻找,语法格式如下:

find_program(<VAR>NAMES<name1>[<name2>...][HINTS<dir1>[<dir2>...]][PATHS<dir1>[<dir2>...]][PATH_SUFFIXES<suffix1>[<suffix2>...]][DOC<string>][REQUIRED][NO_DEFAULT_PATH][NO_CACHE])<VAR>输出变量名,如果找到文件会将完整路径设置到VAR,否则为<VAR>-NOTFOUND NAMES:要找的程序名列表(Windows 可写git或 git.exe,CMake 会自动补全常见后缀) HINTS:提示路径(优先级高于 PATHS;适合你“猜测”安装位置) PATHS:指定额外搜索路径(优先级略低于 HINTS) PATH_SUFFIXES:在每个目录下再追加子目录(如 bin、Scripts) REQUIRED:找不到就直接报错终止配置 NO_DEFAULT_PATH:只在 HINTS/PATHS 中找,不搜系统PATH、注册表、默认目录等 NO_CACHE:不把结果写入缓存(一般不常用;默认会缓存到 CMakeCache.txt 里)

使用find_program 在环境变量和普通变量下寻找文件。

# 设置最低版本cmake_minimum_required(VERSION3.23)# 项目名字project(testFindFile)# 不指定目录,默认从当前路径下查找find_program(v2"a.exe")message(v2=${v2})#v2=v2-NOTFOUND# 查找 git,可写多个候选名find_program(GIT_EXE NAMESgitgit.exe DOC"Path to the git executable")message(STATUS"GIT_EXE =${GIT_EXE}")# -- GIT_EXE = GIT_EXE-NOTFOUNDadd_executable(testFindFile main.cpp)find_program(Test_EXE NAMES testFindFile testFindFile.exe DOC"Path to the git executable")message(STATUS"Test_EXE =${Test_EXE}")

2.17.2 find_library()

使用find_library()命令用于查找指定的库的完整路径。语法格式类似find_program(),如下:

find_library(<VAR>NAMES<name1>[<name2>...][HINTS<dir1>[<dir2>...]][PATHS<dir1>[<dir2>...]][PATH_SUFFIXES<suffix1>[<suffix2>...]][DOC<string>][REQUIRED][NO_DEFAULT_PATH][NO_CACHE])

库:Windows 常见 .lib,MinGW 常见 .a,Linux 常见 .so/.a,
如果找到,VAR保存完整路径;如果找不到,=-NOTFOUND
测试find_library()

# 设置最低版本cmake_minimum_required(VERSION3.23)# 项目名字project(testFindFile)# 不指定目录,默认从当前路径下查找find_program(v2"a.exe")message(v2=${v2})#v2=v2-NOTFOUND# 查找 git,可写多个候选名find_program(GIT_EXE NAMESgitgit.exe DOC"Path to the git executable")message(STATUS"GIT_EXE =${GIT_EXE}")# -- GIT_EXE = GIT_EXE-NOTFOUNDadd_executable(testFindFile main.cpp)find_program(Test_EXE NAMES testFindFile testFindFile.exe DOC"Path to the git executable")message(STATUS"Test_EXE =${Test_EXE}")# 在指定的目录下查找库文件find_library(MYLIB_LIB NAMES my.lib HINTS"E:/cmakeLearning/chap2/12findpro"PATH_SUFFIXES lib lib64 REQUIRED)message(STATUS"MYLIB_LIB =${MYLIB_LIB}")# MYLIB_LIB = E:/cmakeLearning/chap2/12findpro/my.lib
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 9:45:46

【Open-AutoGLM登录失败全解析】:揭秘5大常见原因与快速修复方案

第一章&#xff1a;Open-AutoGLM登录失败的核心原因概述Open-AutoGLM作为一款基于AutoGLM架构的开源自动化工具&#xff0c;其登录机制依赖于身份验证服务、网络配置与本地环境协同工作。当用户在登录过程中遭遇失败时&#xff0c;通常由以下几类核心原因导致。身份认证服务异常…

作者头像 李华
网站建设 2026/4/23 9:45:08

Open-AutoGLM manus实战指南(从零到企业级部署全路径曝光)

第一章&#xff1a;Open-AutoGLM manus实战指南概述Open-AutoGLM 是一个面向自动化生成语言模型任务的开源框架&#xff0c;manus 作为其核心组件&#xff0c;专注于任务编排、上下文管理与多模型协同推理。该模块通过声明式配置驱动复杂 AI 流程&#xff0c;适用于智能问答、自…

作者头像 李华
网站建设 2026/4/23 9:45:41

Alice-Tools:游戏开发者的多功能工具箱

在游戏开发的世界里&#xff0c;AliceSoft系列游戏以其独特的艺术风格和复杂的文件系统而闻名。面对这些游戏中的加密存档、特殊格式图像和编译脚本&#xff0c;许多开发者和爱好者常常感到无从下手。今天&#xff0c;我们将深入探索一款专门为此而生的工具——Alice-Tools。 【…

作者头像 李华
网站建设 2026/4/23 9:45:33

D3QN算法终极实战:PyTorch完整实现指南

想要在强化学习领域快速突破&#xff1f;D3QN算法就是你的不二选择&#xff01;&#x1f3af; 这个融合了Double DQN与Dueling DQN优势的终极算法&#xff0c;能够让你的智能体在复杂环境中游刃有余。今天我们就来聊聊如何用PyTorch从零开始搭建D3QN&#xff0c;5分钟快速部署不…

作者头像 李华
网站建设 2026/4/23 11:11:29

EASY-HWID-SPOOFER硬件伪装终极指南:5分钟快速上手

EASY-HWID-SPOOFER硬件伪装终极指南&#xff1a;5分钟快速上手 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 想要保护个人隐私或测试系统兼容性&#xff1f;EASY-HWID-SPOOFER这…

作者头像 李华
网站建设 2026/4/23 16:02:35

告别卡顿变形!Maya皮肤权重优化神器brSmoothWeights全攻略

告别卡顿变形&#xff01;Maya皮肤权重优化神器brSmoothWeights全攻略 【免费下载链接】brSmoothWeights Advanced skin cluster weights smoothing tool for Autodesk Maya 项目地址: https://gitcode.com/gh_mirrors/br/brSmoothWeights 还在为角色动画中的皮肤变形失…

作者头像 李华