2026/4/17 2:35:24
网站建设
项目流程
有哪些能做专门接做标书的网站,免费网页设计作业成品大一,新乡网络网站建设,用ip访问没有备案的网站文章目录第二章 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_librar…文章目录第二章 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(VARname1[path1 path2])VAR如果找到文件会将完整路径设置到VAR否则为VAR-NOTFOUND NO_CACHE 若指定结果则为普通变量否则结果变量将被创建为缓存变量;REQUIRED 若没有找到任何内容则停止处理并显示错误消息 NO_DEFAULT_PATH 若指定表示不会去搜索额外的目录 NO_CMAKE_PATH:若指定表示不会去搜索普通变量 CMAKE_PREFIX_PATHCMAKE_INCLUDE_PATH,CMAKE_FRAMEWORK_PATH NO_CMAKE_ENVIRONMENT_PATH:若指定表示不会去搜索环境变量 CMAKE_PREFIX_PATH,CMAKE_INCLUDE_PATH、CMAKE_FRAMEWORK_PATH2.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(v1a.h)message(普通变量 v1${v1})# 普通变量v1E:/cmakeLearning/chap2/11findfile/a/a.hmessage(缓存变量 v1$CACHE{v1})# 缓存变量v1E:/cmakeLearning/chap2/11findfile/a/a.hmessage()# 查找没有的文件名find_file(v2a.exeNO_CACHE)message(普通变量 v2${v2})# 普通变量v2v2-NOTFOUNDmessage(缓存变量 V2$CACHE{v2})# 缓存变量V22.16.2 给find_file指定目录find_file() 第三个参数指定搜索路径下面分别演示了指定路径中文件存在和不存在的情况。cmake_minimum_required(VERSION3.23)#查找文件 如果文件存在find_file(v1a.h${CMAKE_SOURCE_DIR}/a)message(普通变量 v1${v1})# 指定文件所有路径find_file(v2a.exe${CMAKE_SOURCE_DIR}/a)message(普通变量 v2${v2})# 查找文件find_file(v3my.h)message(v3${v3})#[[普通变量v1E:/practice_Code/cmake/21findfile/a/a.h 普通变量v2E:/practice_Code/cmake/21findfile/a/a.exev3v3-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_PATHmessage(环境变量CMAKE_INCLUDE_PATH$ENV{CMAKE_INCLUDE_PATH})# 环境变量CMAKE_INCLUDE_PATHE:/cmakeLearning/chap2/11findfile/a#查找文件find_file(v1a.h)message(v1${v1})# v1E:/cmakeLearning/chap2/11findfile/a/a.h2.17 CMake查找程序find_program()与查找库find_library()2.17.1 find_program()使用find_program()命令用于查找指定程序的完整路径。如果设置了CMAKE_LIBRARY_PATH会去该目录下寻找语法格式如下find_program(VARNAMESname1[name2...][HINTSdir1[dir2...]][PATHSdir1[dir2...]][PATH_SUFFIXESsuffix1[suffix2...]][DOCstring][REQUIRED][NO_DEFAULT_PATH][NO_CACHE])VAR输出变量名如果找到文件会将完整路径设置到VAR否则为VAR-NOTFOUND NAMES要找的程序名列表Windows 可写git或 git.exeCMake 会自动补全常见后缀 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(v2a.exe)message(v2${v2})#v2v2-NOTFOUND# 查找 git可写多个候选名find_program(GIT_EXE NAMESgitgit.exe DOCPath to the git executable)message(STATUSGIT_EXE ${GIT_EXE})# -- GIT_EXE GIT_EXE-NOTFOUNDadd_executable(testFindFile main.cpp)find_program(Test_EXE NAMES testFindFile testFindFile.exe DOCPath to the git executable)message(STATUSTest_EXE ${Test_EXE})2.17.2 find_library()使用find_library()命令用于查找指定的库的完整路径。语法格式类似find_program()如下find_library(VARNAMESname1[name2...][HINTSdir1[dir2...]][PATHSdir1[dir2...]][PATH_SUFFIXESsuffix1[suffix2...]][DOCstring][REQUIRED][NO_DEFAULT_PATH][NO_CACHE])库Windows 常见 .libMinGW 常见 .aLinux 常见 .so/.a如果找到VAR保存完整路径如果找不到-NOTFOUND测试find_library()# 设置最低版本cmake_minimum_required(VERSION3.23)# 项目名字project(testFindFile)# 不指定目录默认从当前路径下查找find_program(v2a.exe)message(v2${v2})#v2v2-NOTFOUND# 查找 git可写多个候选名find_program(GIT_EXE NAMESgitgit.exe DOCPath to the git executable)message(STATUSGIT_EXE ${GIT_EXE})# -- GIT_EXE GIT_EXE-NOTFOUNDadd_executable(testFindFile main.cpp)find_program(Test_EXE NAMES testFindFile testFindFile.exe DOCPath to the git executable)message(STATUSTest_EXE ${Test_EXE})# 在指定的目录下查找库文件find_library(MYLIB_LIB NAMES my.lib HINTSE:/cmakeLearning/chap2/12findproPATH_SUFFIXES lib lib64 REQUIRED)message(STATUSMYLIB_LIB ${MYLIB_LIB})# MYLIB_LIB E:/cmakeLearning/chap2/12findpro/my.lib