|
使用系统预定义的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
- # cmake能够识别CMakeLists.txt文件和xxx.cmake结尾的文件,模块就是以xxx.cmake结尾的
- cmake_minimum_required(VERSION 3.19)
- project(cmake_module_example)
- message(STATUS "cmake编译类型:" ${CMAKE_BUILD_TYPE})
- message(STATUS "cmake源码目录:" ${CMAKE_SOURCE_DIR})
- message(STATUS "项目的源码目录:" ${PROJECT_SOURCE_DIR})
- message(STATUS "cmake编译二进制目录:" ${CMAKE_BINARY_DIR})
- message(STATUS "项目的编译二进制目录:" ${PROJECT_BINARY_DIR})
- message(STATUS "cmake模块路径:" ${CMAKE_MODULE_PATH})
- message(STATUS "自己取的项目的名字:" ${PROJECT_NAME})
- add_subdirectory("src")
复制代码
- # 打印信息
- message(STATUS "子目录src的清单文件 BINARY dir " ${PROJECT_BINARY_DIR})
- message(STATUS "子目录src的清单文件 SOURCE dir " ${PROJECT_SOURCE_DIR})
- set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
- # 定义工程根目录; CMAKE_SOURCE_DIR为内建变量,表示工程根目录的CMakeLists.txt文件路径
- SET(ROOT_DIR ${CMAKE_SOURCE_DIR})
- set(EXECUTABLE_FILE_NAME "main")
- # 构建可执行程序
- add_executable(${EXECUTABLE_FILE_NAME} main.cpp)
- # 对于系统预定义的 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指令是一个特例,可以直接调用预定义的模块
- IF(CURL_FOUND)
- # 要安装一下:sudo apt install libcurl4-openssl-dev
- # 头文件:/usr/include/x86_64-linux-gnu
- # 库文件:/usr/lib/x86_64-linux-gnu/libcurl.so
- MESSAGE(STATUS ”找到了CURL 头文件目录 ${CURL_INCLUDE_DIR}”)
- MESSAGE(STATUS ”找到了CURL 头文件: ${CURL_INCLUDES}”)
- MESSAGE(STATUS ”找到了CURL 库文件: ${CURL_LIBRARY}”)
- MESSAGE(STATUS ”找到了CURL 库文件: ${CURL_LIBRARIES}”)
- INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
- TARGET_LINK_LIBRARIES(${EXECUTABLE_FILE_NAME} ${CURL_LIBRARY})
- ELSE(CURL_FOUND)
-
- MESSAGE(FATAL_ERROR ”没有找到CURL library not found”)
- 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
|
|