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

如何创建源代码存放在子目录下的CMake库?

要创建源代码存放在子目录下的CMake库,可以按照以下步骤进行操作:

  1. 首先,在项目根目录下创建一个CMakeLists.txt文件,作为整个项目的主CMake文件。
  2. 在主CMake文件中,使用add_subdirectory()命令来添加子目录。该命令的参数为子目录的路径,可以是相对路径或绝对路径。
  3. 在子目录中,创建一个CMakeLists.txt文件,用于编译子目录中的源代码。
  4. 在子目录的CMakeLists.txt文件中,使用add_library()命令来定义库的名称和源代码文件。可以使用通配符来指定源代码文件的路径,例如src/*.cpp
  5. 如果子目录中有其他依赖库,可以使用target_link_libraries()命令来链接这些库。
  6. 在主CMake文件中,使用target_link_libraries()命令来链接子目录中的库到主项目。

以下是一个示例:

主CMakeLists.txt文件:

代码语言:txt
复制
cmake_minimum_required(VERSION 3.12)
project(MyProject)

# 添加子目录
add_subdirectory(subdirectory)

# 主项目源代码
add_executable(MyProject main.cpp)

# 链接子目录中的库
target_link_libraries(MyProject SubdirectoryLibrary)

子目录的CMakeLists.txt文件:

代码语言:txt
复制
# 子目录源代码
file(GLOB SOURCES "src/*.cpp")

# 子目录库
add_library(SubdirectoryLibrary ${SOURCES})

# 如果有其他依赖库,可以链接它们
target_link_libraries(SubdirectoryLibrary OtherLibrary)

这样,当执行主CMakeLists.txt文件时,CMake会自动编译子目录中的源代码,并将生成的库链接到主项目中。

对于腾讯云相关产品和产品介绍链接地址,由于不能提及具体品牌商,建议您参考腾讯云官方文档或咨询腾讯云的技术支持团队,以获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android OpenCV】Visual Studio 创建支持 OpenCV CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 )

文章目录 一、创建 CMake 工程 二、在 Visual Studio CMake 项目中配置 OpenCV 1、CMakeLists.txt 配置文件说明 2、OpenCV 头文件配置..., 项目位置 , 解决方案名称 ; 创建完毕 CMake 项目如下 : 运行解决方案 , 项目运行成功 ; 二、在 Visual Studio CMake 项目中配置 OpenCV -..., 不是工程根目录文件 ; 在 根目录下 CMakeLists.txt 是 顶层 CMake 项目文件,在此处执行全局配置并包含子项目。..., 其初始内容如下 : # CMakeList.txt: OpenCV_Demo CMake 项目,在此处包括源代码并定义 # 项目特定逻辑。...2、OpenCV 头文件配置 在上一篇博客 【Android OpenCV】Visual Studio 创建支持 OpenCV CMake 工程 ① ( 下载 OpenCV | Windows

2.2K20
  • 解决CMAKE_CURRENT_SOURCE_DIR

    示例代码下面是一个示例 ​​CMakeLists.txt​​ 文件,演示了如何使用 ​​CMAKE_CURRENT_LIST_DIR​​ 变量来解决 ​​CMAKE_CURRENT_SOURCE_DIR​​...使用 ​​CMAKE_CURRENT_LIST_DIR​​ 变量来代替 ​​CMAKE_CURRENT_SOURCE_DIR​​ 变量,能够确保无论在多级子目录中哪个位置,都能正确获取到当前源代码目录路径...CMake工作原理CMake工作原理可以简单概括为以下几个步骤:创建CMakeLists.txt文件:在项目根目录下创建CMakeLists.txt文件,或者在每个子目录下创建一个CMakeLists.txt...运行构建脚本:使用生成构建脚本(如Makefile、Visual Studio项目文件等),使用相应构建工具来执行构建操作,包括编译源代码、链接文件等。...add_library:用于添加一个文件目标。add_subdirectory:用于添加子目录,指定子目录中CMakeLists.txt文件。

    42230

    如何使用PQ获取目录下所有文件夹名(不含文件和子目录)

    今天想把之前发布Power BI示例文件文件夹做一个表出来,只获取该目录下所有文件夹名,并不包含其中各种文件和子目录。 ? 因为每个文件夹中都包含多个文件,甚至还有子文件夹: ?...所以如果直接用“从文件夹获取数据”方式,PowerQuery会使用Folder.Files函数: ? Folder.Files会将所选目录下所有文件路径罗列出来: ?...以下是Folder.Contents说明: ? 这个就比较好了。它只返回所选录下文件夹名和文件名,并不会返回子文件夹下文件。...这样我们就得到了根目录下所有文件夹名,和文件名。尤其是,空文件夹这里也出现了。 接下来就是从列表中只返回文件夹名。...再筛选TRUE行: ? 意思是查看属性,然后筛选那些是“目录”行。 这样,就将该目录下所有文件夹名获取到了。

    7.1K20

    CmakeList编写和参数详解

    cmake 根据内置规则和语法来自动生成相关makefile 文件进行编译,同时还支持静态和动态构建,我把工作中用到东东总结在此,方便忘记时随时查看,具体cmake介绍和详细语法还是参考官方文档...build —– 编译目录,存放编译生成中间文件 cmake 要求工程主目录和所有存放源代码子目录下都要编写CMakeLists.txt 文件,注意大小写(cm 大写,list中...ADD_SUBDIRECTORY(utility) 添加要编译子目录 为工程主目录下存放源代码子目录使用该命令,各子目录出现顺序随意。...LINK_DIRECTORIES(…) 文件存放目录,在程序连接文件时候要再这些目录下寻找对应文件 4....如不指定, 生成执行文件在当前编译目录下子目录下build目录下,好拗口!简单一点: 如指定在: ./src/lib 下 不指定在: .

    2K50

    用Android Studio编译BareSIP

    我们可以在项目中直接引入BareSIP,也可以将BareSIP源代码引入到项目中,目前BareSIP还不是很稳定,因此,使用后者方式方便我们对BareSIP进行二次开发以及修改问题。...下文会一步一步讲述如何在Android Studio中使用CMake编译BareSIP。...将BareSIP引入到项目中有两种方式,一种是直接引入所有需要静态,另一种是直接引入源代码并通过Android Studio进行编译,为了方便后期浏览源代码并基于BareSIP进行二次开发,我们选择后者形式将相关引入到项目中...(根目录CMake构建脚本) 先在根目录下CMakeLists.txt引入子目cmake_minimum_required(VERSION 3.4.1) add_subdirectory(...脚本编写完成后可直接编译,如果有编译错误问题可以根据具体问题进行修改,编译成功后可以在编译输出文件录下找到编译好baresip、openssl、re、rem等静态,如下: app -.externalNativeBuild

    1.6K10

    【Android OpenCV】Visual Studio 创建支持 OpenCV CMake 工程 ③ ( CMake 工程中配置 OpenCV 文件 | 拷贝 OpenCV 函数文件 )

    /han1202012/87358942 一、CMake 工程中配置 OpenCV 文件 ---- 在上一篇博客 【Android OpenCV】Visual Studio 创建支持 OpenCV ...CMake 工程 ② ( VS 中创建 CMake 工程 | CMake 工程中配置 OpenCV 头文件 ) 中 在 Visual Studio 2019 环境下 CMake 工程中配置了 OpenCV...头文件搜索路径 ; # CMakeList.txt: OpenCV_Demo CMake 项目,在此处包括源代码并定义 # 项目特定逻辑。...CMakeLists.txt 构建脚本如下 : # CMakeList.txt: OpenCV_Demo CMake 项目,在此处包括源代码并定义 # 项目特定逻辑。...二、拷贝 OpenCV 文件 ---- 将 Y:\001_DevelopTools\032_OpenCV\opencv\build\x64\vc15\bin 目录下 opencv_world343d.dll

    1.1K20

    CMake用法,这篇文章讲全了

    add_executable(SingleFileExample main.cpp) # 添加可执行目标 如上创建一个名为SingleFileExample可执行程序,源代码为main.cpp。...(VERSION 3.10) # 设置cmake最低版本要求为3.10 project(funclib) # 设置项目名称 # 递归查找source子目录下所有.cpp文件, # 并将它们添加到.../lib) file(GLOB_RECURSE SOURCES "src/*.cpp") # 递归查找source子目录下所有.cpp文件,并将它们添加到SOURCES变量中 add_library.../include) # 添加第三方文件路径 link_directories(${CMAKE_SOURCE_DIR}/third_party/lib) # 递归查找source子目录下所有...同时,通过file命令复制动态到输出目录。 总结 本文结合实际场景讲解CMakeLists.txt文件组织,包括单文件、多文件、多文件夹项目构建,以及如何灵活地集成和管理第三方

    14210

    CMake学习笔记合集

    内部构建和外部构建 上述例子就是内部构建,他生产临时文件特别多,不方便清理 外部构建,就会把生成临时文件放在build目录下,不会对源文件有任何影响强烈使用外部构建方式 外部构建方式举例 //例子目录...还是工程路径 HELLO_BINARY_DIR 编译路径 也就是 /root/cmake/bulid 让Hello World看起来更像一个工程 为工程添加一个子目录 src,用来放置工程源代码...子目录 PS:tree命令在centos中没有,需要提前进行安装,安装命令:yum install tree 每个目录下都要有一个CMakeLists.txt说明 [root@localhost cmake...子目录加入工程并指定编译输出(包含编译中间结果)路径为bin 目录 如果不进行 bin 目录指定,那么编译结果(包括中间结果)都将存放在build/src 目录 更改二进制保存路径 SET.../configure –prefix=/usr 如何安装HelloWord 使用CMAKE一个新指令:INSTALL INSTALL安装可以包括:二进制、动态、静态以及文件、目录、脚本等 使用CMAKE

    2.2K20

    CMake学习笔记

    ,不方便清理 外部构建,就会把生成临时文件放在build目录下,不会对源文件有任何影响强烈使用外部构建方式 外部构建方式举例 //例子目录,CMakeLists.txt和上面例子一致 [root@localhost...还是工程路径 2、HELLO_BINARY_DIR 编译路径 也就是 /root/cmake/bulid 让Hello World看起来更像一个工程 为工程添加一个子目录 src,用来放置工程源代码...子目录 每个目录下都要有一个CMakeLists.txt说明 [root@localhost cmake]# tree . ├── build ├── CMakeLists.txt └── src...子目录加入工程并指定编译输出(包含编译中间结果)路径为bin 目录 如果不进行 bin 目录指定,那么编译结果(包括中间结果)都将存放在build/src 目录 更改二进制保存路径 SET.../configure –prefix=/usr 如何安装HelloWord 使用CMAKE一个新指令:INSTALL INSTALL安装可以包括:二进制、动态、静态以及文件、目录、脚本等 使用CMAKE

    2.1K20

    CMake 秘籍(五)

    叶目录src和external托管我们自己源代码和满足对message依赖所需 CMake 指令,我们将在本示例中构建该如何操作 到目前为止,设置超级构建过程应该感觉很熟悉。...另外两个子目录,interfaces和utils,包含将被编译成更多源代码。 在interfaces子目录中源代码展示了如何封装 backtrace C 系统。...) project(recipe-01 LANGUAGES Fortran C) 我们指示 CMake 在构建目录lib子目录下保存静态和共享。...这是一个一行代码:我们创建一个新目标,该子目录中源文件将被编译到这个目标中。...}) 第二步是在 account 子目录下包含接口定义和实现源代码,我们将在下面详细介绍: # interface and sources add_subdirectory(account) 顶层 CMakeLists.txt

    65920

    cmake快速入门「建议收藏」

    任何一个软件项目,除了写代码之外,还有一个更为重要任务,就是如何组织和管理这些代码,使项目代码层次结构清晰易读,这对以后维护工作大有裨益。...五、处理多源文件目录方法 CMake处理源代码分布在不同目录中情况也十分简单。现假设我们源代码分布情况如下: 其中 src 目录下文件要编译成一个链接。...第二步,子目录中 CmakeLists.txt 在子目录 src 中创建 CmakeLists.txt。文件内容如下: 1 AUX_SOURCE_DIRECTORY(....例如一个需要使用博克利数据项目,需要头文件db_cxx.h 和链接 libdb_cxx.so ,现在该项目中有一个源代码文件 main.cpp ,放在项目的根目录中。...第一步,程序说明文件 在项目的根目录中创建目录 cmake/modules/ ,在 cmake/modules/ 下创建文件 Findlibdb_cxx.cmake ,内容如下: 01 MESSAGE

    1.2K60

    cmake 学习笔记(一)

    )采用了cmake作为构建系统 开源图像处理 opencv 采用cmake 作为构建系统 ......==>先生成一个静态,链接该 例子四 ==>将源文件放置到不同目录 例子五 ==>控制生成程序和所在目录 例子六 ==>使用动态而不是静态 例子一 一个经典C程序,如何cmake...(hello ${SRC_LIST}) 然后,建立一个任意目录(比如本目录下创建一个build子目录),在该build目录下调用cmake 注意:为了简单起见,我们从一开始就采用cmake out-of-source...方式来构建(即生成中间产物与源代码分离),并始终坚持这种方法,这也就是此处为什么单独创建一个目录,然后在该目录下执行 cmake 原因 cmake .....告诉cmake子目录寻找新CMakeList.txt 子文件 在 src CMakeList.txt 文件中,新增加了include_directories,用来指明头文件所在路径。

    52810

    CMake项目的编译流程

    通过 add_subdirectory 添加子目录即可 包含源文件子文件夹未包含 CMakeLists.txt 文件,子目录编译规则体现在主目录 CMakeLists.txt 文件 2....CMake两种构建方式 3.1. 内部构建 (in-source build) : 不推荐使用 内部构建会产生很多中间文件,这些文件并不是我们最终想要,和工程源代码文件放在一起会显得杂乱无章。...内部构建示例 # 在项目源代码根目录下,使用 cmake 指令解析 CMakeLists.txt ,生成 Makefile 和其他文件 cmake . # 执行 make 命令,生成 target make...外部构建 (out-of-source build) : 推荐使用 将编译目录和源代码目录区分开来,放在不同目录中 外部编译示例 # 1....在当前目录下创建 build 文件夹 mkdir build # 2. 进入build目录 cd build # 3.

    1.7K20

    CMAKE入门实战

    2.多个源文件 2.1 同一目录,多个源文件 在1中cmake添加下面这行: # 查找当前目录下所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(....Demo MathFunctions) 以此完成: 子目录添加 链接添加 最后,在子目录下指定链接名字: 子目录中 CMakeLists.txt: # 查找当前目录下所有源文件 # 并将名称保存到...例如,可以将 MathFunctions 设为一个可选,如果该选项为 ON ,就使用该定义数学函数来进行运算。否则就调用标准数学函数。...4.安装和测试 4.1 安装 之前在编译一些源代码程序时候,先make后make install,这样会把一些头文件与静态/动态安装到指定录下。...此时会在本地目录下创建3个不同格式二进制包文件: light@city:~/cmake-demo/Demo8$ ls Demo8* Demo8-1.0.1-Linux.sh Demo8-1.0.1-

    1.5K20

    万字总结编译利器CMake,从入门到项目实战演练

    为了达到这个目的,我们首先需要一个程序来生成这样表。在MathFunctions这个子目录下一个新叫做MakeTable.cxx源文件就是用来干这个。...了解示例项目中各个主题如何协同工作将非常有帮助。示例教程文档和源代码可在CMake源代码Help/guide/tutorial目录中找到。每个步骤都有其自己子目录,其中包含可以用作起点代码。...该是我们自己实现用于计算数字平方根。可执行文件可以使用此,而不是使用编译器提供标准平方根函数。 在本教程中,我们将放入名为MathFunctions子目录中。...导入一个CMake项目(消费者) 本示例说明项目如何查找生成Config.cmake文件其他CMake软件包。 它还显示了在生成Config.cmake如何声明项目的外部依赖关系。...子目录中 CMakeLists.txt: # 查找当前目录下所有源文件 # 并将名称保存到 DIR_LIB_SRCS 变量 aux_source_directory(.

    1.2K00

    Cmake使用

    [EXCLUDE_FROM_ALL]) aux_source_directory – 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个指令临时被用来自动构建源文件列表 # 定义SRC变量,其值为当前目录下所有的源代码文件...:文件输出存放路径 CMake编译工程 CMake目录结构:项目主目录存在一个CMakeLists.txt文件 两种方式设置编译规则: 包含源文件子文件夹包含CMakeLists.txt文件,主目录...CMakeLists.txt通过add_subdirectory添加子目录即可; 包含源文件子文件夹未包含CMakeLists.txt文件,子目录编译规则体现在主目录CMakeLists.txt中;...## 内部构建 # 在当前目录下,编译本目录CMakeLists.txt,生成Makefile和其他文件 cmake . # 执行make命令,生成target make 外部构建(out-of-source...在当前目录下创建build文件夹 mkdir build # 2. 进入到build文件夹 cd build # 3.

    1.4K30
    领券