东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2919|回复: 0
打印 上一主题 下一主题

[C/C++] 使用系统预定义的cmake模块curl例子_访问百度

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14441
QQ
跳转到指定楼层
楼主
发表于 2021-10-15 15:38:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用系统预定义的cmake模块curl例子_访问百度


# 对于系统预定义的 Find<name>.cmake 模块
# 每一个模块都会定义以下几个变量
# • <name>_FOUND
# • <name>_INCLUDE_DIR or <name>_INCLUDES
# • <name>_LIBRARY or <name>_LIBRARIES
# 查找指定的库
find_package(CURL)
# Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.58.0")
# cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake,
# 系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显式的调用,
# FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块

# 要安装一下(我的Ubuntu18.04):sudo apt install libcurl4-openssl-dev
# 头文件:/usr/include/x86_64-linux-gnu
# 库文件:/usr/lib/x86_64-linux-gnu/libcurl.so

  1. # cmake能够识别CMakeLists.txt文件和xxx.cmake结尾的文件,模块就是以xxx.cmake结尾的

  2. cmake_minimum_required(VERSION 3.19)

  3. project(cmake_module_example)

  4. message(STATUS "cmake编译类型:" ${CMAKE_BUILD_TYPE})
  5. message(STATUS "cmake源码目录:" ${CMAKE_SOURCE_DIR})
  6. message(STATUS "项目的源码目录:" ${PROJECT_SOURCE_DIR})
  7. message(STATUS "cmake编译二进制目录:" ${CMAKE_BINARY_DIR})
  8. message(STATUS "项目的编译二进制目录:" ${PROJECT_BINARY_DIR})
  9. message(STATUS "cmake模块路径:" ${CMAKE_MODULE_PATH})

  10. message(STATUS "自己取的项目的名字:" ${PROJECT_NAME})


  11. add_subdirectory("src")



复制代码



  1. # 打印信息
  2. message(STATUS "子目录src的清单文件 BINARY dir " ${PROJECT_BINARY_DIR})
  3. message(STATUS "子目录src的清单文件 SOURCE dir " ${PROJECT_SOURCE_DIR})

  4. set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

  5. # 定义工程根目录; CMAKE_SOURCE_DIR为内建变量,表示工程根目录的CMakeLists.txt文件路径
  6. SET(ROOT_DIR ${CMAKE_SOURCE_DIR})

  7. set(EXECUTABLE_FILE_NAME "main")

  8. # 构建可执行程序
  9. add_executable(${EXECUTABLE_FILE_NAME} main.cpp)

  10. # 对于系统预定义的 Find<name>.cmake 模块
  11. # 每一个模块都会定义以下几个变量
  12. # • <name>_FOUND
  13. # • <name>_INCLUDE_DIR or <name>_INCLUDES
  14. # • <name>_LIBRARY or <name>_LIBRARIES
  15. # 查找指定的库
  16. find_package(CURL)
  17. # Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.58.0")
  18. # cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake,
  19. # 系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显式的调用,
  20. # FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块

  21. IF(CURL_FOUND)
  22. # 要安装一下:sudo apt install libcurl4-openssl-dev
  23. # 头文件:/usr/include/x86_64-linux-gnu
  24. # 库文件:/usr/lib/x86_64-linux-gnu/libcurl.so
  25. MESSAGE(STATUS ”找到了CURL 头文件目录 ${CURL_INCLUDE_DIR}”)
  26. MESSAGE(STATUS ”找到了CURL 头文件: ${CURL_INCLUDES}”)
  27. MESSAGE(STATUS ”找到了CURL 库文件: ${CURL_LIBRARY}”)
  28. MESSAGE(STATUS ”找到了CURL 库文件: ${CURL_LIBRARIES}”)

  29. INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
  30. TARGET_LINK_LIBRARIES(${EXECUTABLE_FILE_NAME} ${CURL_LIBRARY})

  31. ELSE(CURL_FOUND)

  32. MESSAGE(FATAL_ERROR ”没有找到CURL library not found”)

  33. ENDIF(CURL_FOUND)
复制代码


vscode检测到#include错误,请更新includePath。解决方法


在vscode中摁ctrl+shift+p搜索json文件  c/c++编辑配置(json)



jiang@jiang-Ubuntu:~/c_c++_works/cmake_demo_jjj/cmake_module_example/build$ cmake ..
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- cmake编译类型:
-- cmake源码目录:/home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example
-- 项目的源码目录:/home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example
-- cmake编译二进制目录:/home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example/build
-- 项目的编译二进制目录:/home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example/build
-- cmake模块路径:
-- 自己取的项目的名字:cmake_module_example
-- 子目录src的清单文件 BINARY dir /home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example/build
-- 子目录src的清单文件 SOURCE dir /home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example
-- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.58.0")  
-- ”找到了CURL头文件目录/usr/include/x86_64-linux-gnu”
-- ”找到了CURL头文件:”
-- ”找到了CURL库文件:/usr/lib/x86_64-linux-gnu/libcurl.so”
-- ”找到了CURL库文件:/usr/lib/x86_64-linux-gnu/libcurl.so”
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jiang/c_c++_works/cmake_demo_jjj/cmake_module_example/build







main.cpp

716 Bytes, 阅读权限: 10, 下载次数: 0

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-28 14:36 , Processed in 0.207780 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表