首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有可能在cmake中编写一个忽略以某种方式结束的文件的GLOB_RECURSE?

在cmake中,可以使用GLOB_RECURSE命令来查找指定路径下的所有符合特定模式的文件。然而,目前的cmake版本(包括最新版本)并不支持直接在GLOB_RECURSE命令中忽略以某种方式结束的文件。

通常,我们可以通过在CMakeLists.txt文件中使用自定义的逻辑来实现这一功能。以下是一个示例的解决方案:

代码语言:txt
复制
# 遍历文件夹并忽略以指定方式结束的文件
function(IGNORE_FILES_GLOB_RECURSE result folder pattern ignore_ending)
    file(GLOB_RECURSE files ${folder}/${pattern})
    set(filtered_files "")
    foreach(file ${files})
        string(FIND ${file} ${ignore_ending} ending_index REVERSE)
        if(${ending_index} EQUAL -1)
            list(APPEND filtered_files ${file})
        endif()
    endforeach()
    set(${result} ${filtered_files} PARENT_SCOPE)
endfunction()

# 使用示例
set(ignore_ending ".txt")  # 设置忽略以".txt"方式结束的文件
IGNORE_FILES_GLOB_RECURSE(my_files "${CMAKE_CURRENT_SOURCE_DIR}" "*" "${ignore_ending}")

# 输出结果
foreach(file ${my_files})
    message("File: ${file}")
endforeach()

上述示例中,我们定义了一个名为IGNORE_FILES_GLOB_RECURSE的函数,该函数接受四个参数:result(保存结果的变量名)、folder(要搜索的文件夹路径)、pattern(文件匹配模式)、ignore_ending(要忽略的文件的结尾方式)。函数内部使用file命令的GLOB_RECURSE选项来搜索指定文件夹下的所有符合模式的文件,并通过自定义的逻辑来过滤掉结尾方式为ignore_ending的文件。最后,将过滤后的文件列表存储在result参数所指定的变量中,并通过PARENT_SCOPE选项使其在函数调用的上下文中可见。

使用时,我们可以将忽略的文件结尾方式通过设置ignore_ending变量来指定,然后调用IGNORE_FILES_GLOB_RECURSE函数来获取符合条件的文件列表。最后,可以根据需要对获取到的文件列表进行进一步的操作或输出。

需要注意的是,上述解决方案只是通过自定义的逻辑来实现忽略特定方式结束的文件,而非直接使用cmake提供的现有功能。此外,由于CMakeLists.txt文件本身是一个cmake脚本,因此可以在其中使用cmake提供的各种命令和函数来实现更加复杂的操作。

相关搜索:有没有可能在没有javascript的情况下,以某种方式在Rails的索引页面上为每个家长创建表单?有没有可能以某种方式在一个文件中编写def函数,并在导入时在另一个文件中使用它?行动手册中的这些可能的任务可以以某种方式合并到一个任务中吗?有没有可能在groupBy中以一种简单的方式对每个组进行排序?有没有可能在Python中修饰一个函数,以便记录它的开始和结束?以一种很好的方式在R脚本中编写一堆文件基于TypeScript中的另一个接口,我可以以某种方式定义接口中的索引名吗?flutter web以某种方式允许从本地计算机上的固定路径中挑选文件吗?如何将循环中的每个元素附加到新创建的<a>标记中,但以某种方式使每个元素都以单独的锚标记结束?给定一个文件目录,有没有在IntelliJ中打开该文件的快捷方式?这是一个问题,我以某种方式设法在MySQL表中获得两个具有相同名称的索引?有没有办法以编程方式从Google Drive公共文件夹中读取图像的URL?有没有什么标准的方法可以在FreeBSD中以编程方式获取文件或目录的创建时间以一种简单的Pythonic方式向csv文件中写入一个简单的dict?有没有可能在一个单独的可执行文件中嵌入电子应用程序和数据文件?有没有办法在不使用COM的情况下在C#中以编程方式遵循Windows文件系统快捷方式?以递归方式将遵循特定模式的所有文件中的特定文本替换为另一个文本使用VBA,我想将一张图纸导出为CSV文件,但以某种方式添加了今天的日期。这将是每日导出-因此需要一个日期如何在R中编写一个以Excel文件名为参数(无扩展名)并导入该文件的函数当尝试在React中以某种形式使用react-select模块时,一个JSON文件中的数据会覆盖另一个JSON数据集
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CMake编写总结

CMake编写总结 不定期更新 CMake介绍 以下来自百度百科 CMake一个跨平台安装(编译)工具,可以用简单语句来描述所有平台安装(编译过程)。...各种CMake编写 以下收录是本人自己各种项目的CMakeLists.txt文件做参考 CMakeLists.txt一般使用格式 #set minimum compile version CMake_minimum_required...#genarate a app add_executable(${TARGET_NAME} 源文件文件) 简单C++项目编写CMakeLists.txt 简单项目是指只有一个文件夹,并且所有项目文件都放在其中项目...)C++项目写CMakeLists.txt 复杂项目示例 一般有较多文件项目都是使用多文件夹进行管理项目源文件,使用多个不同级目录下保存源文件管理方式使用CMake生成makefile可以使用以下管理方式..."*.cpp") file(GLOB_RECURSE HEADERS "*.h") 这样就可以对多个文件夹管理项目使用CMake生成makefile了 qt项目编写CMake qt项目需要添加相应

1.1K10

用Android Studio编译BareSIP

BareSIP官方虽然也有和Android相关文档说明,其对Android开发者而言相当不友好,虽然也有简单Demo,但是文档描述很少,也很难应用到生产环境,如果想基于此快速将BareSIP整合到应用并进行二次开发...新建项目 首先,在Android Studio中新建带有Native C++项目,这样创建完成后,IDE会自动生成原生代码Demo和一个简单JNI框架。...openssl源代码是Makefile方式构建,因此我们需要手动编写CMakeLists.txt cmake_minimum_required(VERSION 3.4.1) include_directories...,因此我们需要修改或者直接新建一个CMakeLists.txt,注意编译re需要引用openssl头文件 cmake_minimum_required(VERSION 3.4.1) include_directories...脚本编写完成后可直接编译,如果有编译错误问题可以根据具体问题进行修改,编译成功后可以在编译输出文件目录下找到编译好baresip、openssl、re、rem等静态库,如下: app -.externalNativeBuild

1.6K10
  • Android NDK 开发之 CMake 必知必会

    这意味就不需要再编写 .mk 文件来编译 so 动态库了。 CMake一个跨平台构建系统,在 Android Studio 引入 CMake 之前,它就已经被广泛运用了。...使用 GLOB 和 GLOB_RECURSE 有好处,就是当添加需要编译文件时,不用再一个一个手动添加了,同一目录下内容都被包含在对应变量中了,但也有弊端,就是新建了文件,但是 CMake 并没有改变...指当前 CMake 文件完整路径 PROJECT_SOURCE_DIR 指当前工程路径 比如,在 add_library 需要指定 cpp 文件路径, CMAKE_CURRENT_SOURCE_DIR...有了这些常量做区分,就可以在一份 CMake 文件编写不同平台编译选项。...ADD_SUBDIRECTORY(src/main/cpp/turbojpeg) ADD_SUBDIRECTORY(src/main/cpp/glm) 添加头文件 在使用时候有一个容易忽略步骤就是添加头文件

    1.5K20

    学习了CC++,居然不了解Cmake这一利器

    一、基础配置 1、设置CMake 版本要求 因为 Cmake 版本之间存在差异,在编写 CMakefile 时还需要用 cmake_minimum_required 语句设置一个最低版本要求,一般位于文件第一行..._之前版本,会被忽略。...FATAL_ERROR: 该参数在 cmake _2.6_及以后版本被忽略,在 cmake _2.4_及以前版本,需要指明该参数,使得 cmake 能提示失败而不是一个警告。...include 目录,这个命令会将指定目录添加到编译器文件搜索路径,使得在编译源代码时,编译器能够找到这些目录下文件。...二、编译目标文件——示例演示 小鱼一个cmake 模板示例一个CMake Project模板仓库来细说。 编写cmake 需要确认编译目标需要文件,以及链接需要依赖库。

    13210

    CMake file命令参数GLOB和GLOB_RECURSE

    READ选项将会读一个文件内容并将其存储在变量里。读文件位置从offset开始,最多读numBytes个字节。如果指定了HEX参数,二进制代码将会转换为十六进制表达方式,并存储在变量里。...STRINGS将会从一个文件中将一个ASCII字符串list解析出来,然后存储在variable变量文件二进制数据会被忽略。回车换行符会被忽略。...典型使用方式是: file(STRINGS myfile.txt myfile) 该命令在变量myfile存储了一个list,该list每个项是输入文件一行文本。...GLOB_RECURSE选项将会生成一个类似于通常GLOB选项list,只是它会寻访所有那些匹配目录子路径并同时匹配查询表达式文件。...TO_CMAKE_PATH选项会把path转换为一个unix / 开头cmake风格路径。输入可以是一个单一路径,也可以是一个系统路径,比如"$ENV{PATH}"。

    3.6K10

    CMake用法,这篇文章讲全了

    CMake一个开源、跨平台自动化构建系统,用于管理软件构建过程。它通过编写配置文件(CMakeLists.txt),自动生成适合不同编译器和操作系统构建脚本或项目文件。...单文件 假设工程只有main.cpp一个文件文件布局如下: . ├── CMakeLists.txt └── main.cpp 那么该如何使用书写其CMakeLists文件呢,如下为一个简单CMakeLists.txt...引用第三方库(静态库) 在实际开发,往往需要依赖外部库。静态库为例,考虑引入其他同事提供库func.lib,其配套文件为func.h,同时,生成动态库名称为BirdEngine。.../lib) file(GLOB_RECURSE SOURCES "src/*.cpp") # 递归查找source子目录下所有.cpp文件,并将它们添加到SOURCES变量 add_library....cpp文件,并将它们添加到SOURCES变量 file(GLOB_RECURSE SOURCES "src/*.cpp") add_executable(${PROJECT_NAME} ${

    13410

    程序员C语言快速上手——工程篇(十三)

    当C语言工程很大,源码非常多时,如果还去使用GCC命令编译程序,几乎是不现实。这时候,可以通过编写shell脚本去执行编译命令,当然这并不是一种好方式。...在Linux上我们可以写shell脚本,在Windows上则可以编写bat脚本 本篇如下源码作为示例工程,需要编译一个main.exe程序出来 add.c int add(int a, int b){...简单说,以前我们编写C语言编译脚本是不能跨平台编译,例如上面示例编写 Makefile ,它只能在GCC环境下编译,通常是Linux系统上,而在Windows下Visual Studio里面就没法用...,这就弄乱了源码工程目录,如果要发布源码,还得手动一个个去删除这些文件,这显然不是一种好构建方式,这种方式被称为内部构建,相应,我们需要使用外部构建方式来解决问题。...# 递归遍历当前目录下所有.c .cpp后缀名文件,并将结果列表保存到SRC_LIST变量 FILE(GLOB_RECURSE SRC_LIST *.c *.cpp) # 打印 message (

    3K30

    星球专享 | 播放器 FFmpeg 依赖库配置

    如图所示,1 和 2 代表两个 CMakeLists.txt 文件,其中 1 代表是 SDK 工程 CMake 配置文件,2 代表是播放器工程 CMake 配置文件。...这个构建,如下图所示: 选择 SDK 工程打开方式时就只有 2 和 3 选项了,其中 2 是 SDK 构建,3 是单测构建,而 1 是播放器打开方式才有的,前期很多时候都只要 SDK 打开方式就行了...我们要就是这两个目录里东西,直接拷出来用,为此我建立了一个仓库,单独存放这些编译好文件(只用静态库就行)。...首先新建了一个 vendor.cmake 作辅助,判断当前系统是什么平台和架构: if (CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") set(arch arm64...file(GLOB_RECURSE DEMO_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.*) # 添加 SDK 目录 add_subdirectory

    59320

    CMake 基础学习

    不会被链接到其它目标,但是可能会在运行时使用dlopen-系列函数动态链接 例: # create lib , 在当前cmake 创建一个lib,名称为model_login,SHARED...binary_dir 指定中间二进制和目标二进制存放位置 EXCLUDE_FROM_ALL 编译过程中排除文件 aux_source_directory 查找目录所有源文件 aux_source_directory...( ) 查找指定目录dir中所有源文件名称,并将列表存储在提供variable 例: aux_source_directory(....该命令用来查找一个文件一个名为cache条目会被创建来存储该命令结果。如果找到了该库文件,那么结果会存储在该变量里,并且搜索过程将不再重复,除非该变量被清空。...开头文件并保存到SRC_FILES变量里 file(GLOB SRC_FILES "src/hello*") # 递归查找 file(GLOB_RECURSE SRC_FILES "src/hello

    1.8K40

    clion mac 下刷题最佳配置

    clion 打题有几个常见问题: 默认 cmakelist 配置下只能有一个 main 函数,之前采用是每写完一题就注释掉,很不方便; mac 下 clion 没有万能头 bits/stdc+...+.h 这里就来解决这几个问题,同时还支持:配置自定义代码模板 1.解决只能执行一个 main 函数问题 以前总觉得怎么clion这么反人类,归根到底还是对cmake不熟。...修改CmakeList.txt文件: 改成: cmake_minimum_required(VERSION 3.17) project(algorithm) set(CMAKE_CXX_STANDARD...14) # 上面的用你自己就行 # 遍历项目根目录下所有的 .cpp 文件 file (GLOB_RECURSE files *.cpp) foreach (file ${files}) string...3.配置自定义代码模板 每次写代码都要写一堆头文件、main函数等,这里我们通过自定义来减少重复代码量 4.设置代码样式 c++ 代码风格,类型与参数名最好分开,也就是说,原来int *a,想改成

    86100

    FLTK基于cmake编译以及使用(Windows、macOS以及Linux)

    cmake"外部构建"方式) # 执行该命令前,请先阅读下面的cmake前置条件 cmake .. # Windows下建议使用PowerShell,上述命令基本没有差别。...调用对应平台工具链完成FLTK编译 cmake进行项目构建完成后,在我们当前build目录,对于macOS/Linux类操作系统,CMake会为我们生成了对应makefile文件,所以我们直接使用...编译完成后,build目录中会生成一个lib文件夹,这里面存放就是fltk编译出来静态链接库。...准备头文件 对于我方式,在build文件,我们创建一个inlude文件夹,并且将build上一层fltk根目录FL文件夹复制到build/include,形成如下结构: build/include...基础项目搭建 创建一个名为fltk-demo目录 将上一步fltk-dist-1.3.8文件夹整体复制到fltk-demo目录 项目根目录创建src文件夹,并在其中创建main.cpp: #include

    81330

    Jetson Nano上运行OpenCV C++

    很多人问我,怎么在Jetson Nano上跑我课程代码,今天就给大家演示一下,如何在Jetson Nano跑通OpenCV学堂 B站 OpenCV C++快速入门30讲最后一个课时人脸检测代码演示。...cmake直接编译吧 你好 cmake_minimum_required( VERSION 2.8 ) # 声明一个 cmake 工程 project(face_detect_demo) # 设置编译模式...{OpenCV_INCLUDE_DIRS}) FILE(GLOB_RECURSE TEST_SRC src/*.cpp #src/*.c #${CMAKE_SOURCE_DIR...}/*.cpp #${CMAKE_SOURCE_DIR}/*.cp ) # 添加一个可执行程序 # 语法:add_executable( 程序名 源代码文件 ) add_executable...生成可执行文件 cmake已经成功了,现在再make一下,生成可执行文件吧,我们可执行文件名称是target,之前定义在CMakeLists.txt文件,make也成功了,真不错!

    37130

    CMakeLists.txt 语法介绍与实例演练

    大家好,又见面了,我是你们朋友全栈君。 一、Cmake 简介 cmake一个跨平台、开源构建系统。它是一个集软件构建、测试、打包于一身软件。...(dir VAR) 发现一个目录下所有的源代码文件并将列表存储在一个变量。...简单项目(单个源文件一个经典 C 程序,如何通过 cmake 来编译呢?...一般我们采用 cmake out-of-source 方式来构建(即生成中间产物和源代码分离),这样做可以让生成文件和源文件不会弄混,且目录结构看起来也会清晰明了。...但我们并不直接编写这个文件,为了方便从 CMakeLists.txt 中导入配置,我们编写一个 config.h.in 文件,内容如下: #cmakedefine USE_MYMATH 这样 cmake

    2.2K20

    面向 C++ 现代 CMake 教程(五)

    对象库 对象库用于将多个源文件组合到一个单一逻辑目标,并在构建过程编译成(.o)目标文件。...您可能会发现它与 Clang-Tidy 模块有些相似(来自第九章,《程序分析工具》);这是 CMake 优势——许多概念工作方式都是一致。...安装和打包就此结束;接下来要处理事务是文档。 提供文档 当然,一个专业项目的最后一个元素是文档。...但那是另一本书故事。 概要 这一章结束了我们通过 CMake 漫长旅程。现在你完全理解了 CMake 旨在解决问题以及实现这些解决方案所需步骤。...生成与 匹配文件列表,并将其存储在 变量GLOB_RECURSE 模式还将扫描嵌套目录。

    11700

    面向 C++ 现代 CMake 教程(一)

    在 Git 忽略文件 有很多版本控制系统;其中最流行一种是 Git。每当我们开始一个新项目时,确保我们只将需要存在于仓库文件提交到仓库是很重要。...在熟练编写基本列表文件之后,我们将在下一章开始准备实际项目文件。如果你还记得,脚本可以用以下命令运行: cmake -P script.cmake 注意 CMake 支持\n或\r\n行结束。...CMake 过程式范例 让我们假设一下,我们想要以与在 C++ 编写程序相同方式编写一些 CMake 代码。...这个知识本身将帮助您理解 CMake 列表文件可能在其他项目中看到异常语法。 接下来,我们讲解了 CMake 变量——具体来说,是如何引用、设置和取消设置普通、缓存和环境变量。...这个知识本身将帮助您理解 CMake 列表文件可能在其他项目中看到异常语法。 接下来,我们讲解了 CMake 变量——具体来说,是如何引用、设置和取消设置普通、缓存和环境变量。

    1K01

    CMake使用总结

    CMake解析配置文件CMakeLists.txt生成Makefile,相比直接用Makefile管理工程,CMake更灵活和简单。 简单例子 一个完整Demo可参考这里。...SRC_LIST) 查找src目录下所有cmake开头文件并保存到CMAKE_FILES变量里 file(GLOB CMAKE_FILES "src/cmake*") file命令同时支持目录递归查找...file(GLOB_RECURSE CMAKE_FILES "src/cmake*") 按照官方文档说法,不建议使用fileGLOB指令来收集工程文件,原文解释如下 We do not recommend.../lib ) 添加生成目标 使用SRC_LIST源文件列表里文件生成一个可执行文件hello add_executable(hello ${SRC_LIST}) 使用SRC_LIST源文件列表里文件生成一个静态链接库...libhello.a add_library(hello STATIC ${SRC_LIST}) 使用SRC_LIST源文件列表里文件生成一个动态链接库libhello.so add_library

    1.7K10

    Android_其他语言交互篇——Js、C#、C、C++

    ①、调用方式 Unity端调用Android端: 前两行都是固定(也有其他写法,但这个既常用又简单),最后两个分别是有返回值方法和无返回值方法调用(第一个参数是安卓所定义方法名字,第二个参数是方法所传入参数...,从他眼神我还是看出他对我一点都不相信,呵呵...... ①、准备工作: JNI开发需要NDK及CMake(也可以不使用CMake而是用其他方法,但是CMake用起来最简单易懂,且在安卓Sdk即可下载说明它比较先进是有很大优势所以谷歌推荐使用...,于是本篇就使用CMake进行编写),使用Android Sdk Manager或如图Settings界面下载: ?...新建CMakeLists.txt文件 然后,编辑CMakeLists.txt文件,有两项不可缺少配置(图中每行 # 后面的都是注释,可忽略): 1、cmake_minimum_required:最低...Android调用JNI native方法在JNI文件代码实现(C++和C代码还是略微不同,下图分别贴出做下比较,其实.cpp文件是既可以编写C++代码又可以编写C代码): ?

    2.2K20
    领券