CMake编程实践(六) 模块使用和自定义模块

本文介绍了CMake中模块的使用,包括如何利用FindCURL模块以及如何编写和使用自定义的FindUTILSBOX模块。通过示例展示了如何根据系统模块找到库并添加到工程中,以及自定义模块的实现和应用。
摘要由CSDN通过智能技术生成

模块使用和自定义模块

cmake开发者在开发过程中认为纯粹依靠cmake本身提供的基本指令来管理工程是也一件非常复杂的事情,所以cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake, 系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显式的调用,FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块。

在本篇,将先介绍cmake提供的FindCURL模块的使用。然后,基于我们上节的libutilsbox共享库,编写一个FindUTILSBOX.cmake 模块。

注意:FIND_PACKAGE调用预定义在 CMAKE_MODULE_PATH 下的 Find.cmake 模块,如果我们要调用UtilsBox模块,则要写成FindUTILSBOX.cmake,文件名是大小写敏感的,注意UtilsBox模块名称要全部大写。否则会提示找不到,你可以尝试把FindUTILSBOX.cmake中的UTILSBOX改为小写,然后重新cmake … 看看会提示什么。

本篇源码在cmake-curl-utilsbox项目中,通过目录树可以明显看出多了cmake目录以及FindUTILSBOX.cmake
cmake-curl-utilsbox项目中同时使用系统提供的系统预定义的FindCURL模块以及自定义的FindUTILSBOX模块,
需要依赖上节安装的utilsbox库。

目录树:

.
├── cmake
│ └── FindUTILSBOX.cmake
├── CMakeLists.txt
├── doc
│ └── Introduction.txt
├── README.md
└── src
    ├── CMakeLists.txt
    └── main.cpp

CMakeLists.txt

# 声明编译要求cmake最低版本
cmake_minimum_required(VERSION 3.0)

# 声明一个cmake工程
project(CURLTEST)

# 添加子目录, 并指定指定中间二进制和目标二进制存放的位置
ADD_SUBDIRECTORY(src bin)

src/main.cpp

#include <iostream>
#include <curl/curl.h>
#include <utilsbox.h>

using namespace std;

FILE *fp;

int write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
 int written = fwrite(ptr, size, nmemb, (FILE *)fp);
 return written;
}

int main(int argc, char** argv)
{
 const char * path = "/tmp/curl-test";
 const char *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值