首页 > 其他分享 >CMake匹配不带扩展名的头文件

CMake匹配不带扩展名的头文件

时间:2023-10-12 10:45:15浏览次数:34  
标签:FILES 文件 头文件 CMake 正则表达式 HEADERS CPP 扩展名

要在CMake中匹配不带扩展名的头文件,可以使用 file(GLOB ...) 和正则表达式来过滤结果。以下是一种方法,该方法首先收集目录下的所有文件,然后使用 list(FILTER ...) 命令和正则表达式来只保留没有扩展名的文件:

# 使用GLOB收集目录下的所有文件
file(GLOB ALL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/path/to/*")

# 先复制ALL_FILES到CPP_HEADERS
set(CPP_HEADERS ${ALL_FILES})

# 使用list(FILTER)和正则表达式来过滤出不带扩展名的文件
list(FILTER CPP_HEADERS EXCLUDE REGEX ".*\\..+$")

# 使用install()命令来安装这些文件
install(FILES ${CPP_HEADERS}
        DESTINATION desired/destination/directory)

在这里,正则表达式 .*\\..+$ 匹配任何带有扩展名的文件,因此我们使用 EXCLUDE 关键字来排除这些文件,只保留不带扩展名的文件。

请注意,正则表达式可能需要根据你的具体需求进行调整。上述正则表达式的意思是匹配任何包含一个点(.)的文件,这在大多数情况下应该是足够的,但如果你有特殊的文件命名约定或目录结构,你可能需要进行一些调整。

标签:FILES,文件,头文件,CMake,正则表达式,HEADERS,CPP,扩展名
From: https://www.cnblogs.com/linxmouse/p/17758929.html

相关文章

  • cmakelist文件format
    这里主要是希望在vscode中编写CMakeList.txt过程中,对[[cmake]]语言进行format处理。首先在vscode中安装cmake-format插件cmake-format-VisualStudioMarketplace然后需要安装cmake-format.exe程序。这里需要使用[[Python]]进行安装:pipinstallcmake_forma......
  • vscode交叉编译cmake工程,toolchains设置
    在VisualStudioCode中编译CMake项目时,使用自定义工具链(toolchains)可以很有用,特别是当你需要交叉编译或使用不同的编译器时。以下是在VisualStudioCode中使用自定义工具链的一般步骤,以aarch64的嵌入式为例:创建自定义工具链文件:首先,你需要创建一个包含有关你的自定义工具链......
  • 使用CEF(六)— 解读CEF的cmake工程配置
    距离笔者的《使用CEF》系列的第一篇文章居然已经过去两年了,在这么长一段时间里,笔者也写了很多其它的文章,再回看《使用CEF(一)—起步》编写的内容,文笔稚嫩,内容单薄是显而易见的(主要是教大家按部就班的编译libcef_dll_wrapper库文件)。笔者一直以来的个性就是希望自己学习到的知识,研究......
  • Windows下Cmake编译Poco库
    C++Windows下使用Cmake编译Poco库1.编译前准备:先配置OpenSSL环境(opensslversion-a查看)如果openssl是1.0.*版本,Poco版本最高用1.9.4。如果1.1或者更高,用最新版本。2.编译命令(演示使用VS2022编译v140版本Win32的库):cd..mkdircmake_build_x86cdcmake......
  • linux跳过cmake,安装高版本的wgrib2
    一、安装依赖包yumgroupinstall'DevelopmentTools'yuminstallzlib-devel-yyuminstalllibpng-devel-yyuminstallopenssl-devel-yyum-yinstallgccgcc-c++opensslopenssl-develtar二、下载wgrib2编译包并且解压,修改makefiletarxvfwgrib2.tgz.v3.1.2......
  • CMAKE学习记录
    介绍CMake是一个跨平台的开源构建工具,用于管理软件构建过程。它采用了一种声明式的构建配置语言,可以生成与平台无关的构建脚本,使得在不同的操作系统和编译器上都能够方便地构建项目。CMake的设计目标是提供一个简洁、高效的构建系统,以更好地支持大型项目的构建和管理。它具有......
  • cmake之link_libraries 和 target_link_libraries区别
    在cmake语法中,link_libraries和target_link_libraries是很重要的两个链接库的方式,虽然写法上很相似,但是功能上有很大区别:link_libraries用来链接静态库,target_link_libraries用来链接导入库,即按照头文件+.lib(动态库导入库)+.dll(动态库)方式隐式调用动态库的.lib导入......
  • My头文件(8)
    自定义头文件"almighty.hpp"持续更新almighty.h内部内容:#ifndef_ALMIGHTY_#define_ALMIGHTY_#include<bits/stdc++.h>#definednpRandom_Numbers_Moonspace#definedsmData_Structure_Moonspaceusingnamespacestd;#definesdsigned#defineudunsigne......
  • My头文件(7)
    自定义头文件"almighty.hpp"持续更新almighty.h内部内容:#ifndef_ALMIGHTY_#define_ALMIGHTY_#include<bits/stdc++.h>#definedsmData_Structure_Moonspaceusingnamespacestd;#definesdsigned#defineudunsigned#definectconst#definescstatic......
  • 【rk356x】Linux Cmake如何进行交叉编译
    compiler.arm.cmakeSET(GCC_PATH/work/xxx/buildroot/output/rockchip/host/bin)SET(toolpathprefix${GCC_PATH}/aarch64-buildroot-linux-gnu-)set(libusb_path/work/xxx/libusb/install/lib/pkgconfig/libusb-1.0.pc)SET(CMAKE_C_COMPILER${toolpathprefix}gcc)SET......