当前位置: 首页 > news >正文

抚顺市+网站建设设计公司的企业文化内容

抚顺市+网站建设,设计公司的企业文化内容,163免费注册入口,全国做网站的大公司CMake模块的使用和自定义模块一、前言二、使用Find模块2.1、准备工作2.2、添加头文件路径和库文件2.3、 name _FOUND 来控制工程特性三、编写自定义的Find模块3.1、 准备工作3.2、cmake 模块3.3、使用自定义的FindHELLO 模块构建工程3.4、如果没有找到hello library四、… CMake模块的使用和自定义模块一、前言二、使用Find模块2.1、准备工作2.2、添加头文件路径和库文件2.3、 name _FOUND 来控制工程特性三、编写自定义的Find模块3.1、 准备工作3.2、cmake 模块3.3、使用自定义的FindHELLO 模块构建工程3.4、如果没有找到hello library四、总结一、前言 本文将着重介绍系统预定义的Find 模块的使用以及自己编写Find 模块系统中提供了其他各种模块一般情况需要使用INCLUDE 指令显式的调用FIND_PACKAGE 指令是一个特例可以直接调用预定义的模块。 其实使用纯粹依靠cmake 本身提供的基本指令来管理工程是一件非常复杂的事情所以 cmake 设计成了可扩展的架构可以通过编写一些通用的模块来扩展cmake. 本文首先介绍一下cmake 提供的 FindCURL 模块的使用。然后基于共享库编写一个FindHello.cmake 模块。 二、使用Find模块 FIND_PACKAGE 指令 FIND_PACKAGE(name [major.minor] [QUIET] [NO_MODULE] [[REQUIRED|COMPONENTS] [componets...]])可以使用多种参数QUIET 参数REQUIRED 参数其含义是指这个共享库是否是工程必须的如果使用了这个参数说明这个链接库是必备库如果找不到这个链接库则工程不能编译。 2.1、准备工作 1建立 t5 目录用于存放我们的CURL 的例子。 mkdir t52建立src 目录并建立src/main.c cd t5 mkdir src cd src vim main.c内容如下 #include curl/curl.h #include stdio.h #include stdlib.h #include unistd.h FILE *fp NULL; 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(void) {const char * path /tmp/curl-test;const char * mode w;fp fopen(path, mode);curl_global_init(CURL_GLOBAL_ALL);CURL *curl curl_easy_init();curl_easy_setopt(curl, CURLOPT_URL, http://www.baidu.com);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);CURLcode res curl_easy_perform(curl);curl_easy_cleanup(curl);return 0; }这段代码的作用是通过curl 取回http://www.linux-ren.org 的首页并写入/tmp/curl-test文件中。 3建立主工程文件CMakeLists.txt。 cd t5 vim CMakeLists.txt内容如下 PROJECT(CURLTEST) ADD_SUBDIRECTORY(src)4建立src/CMakeLists.txt内容如下 ADD_EXECUTABLE(curltest main.c)现在自然是没办法编译的我们需要添加 curl 的头文件路径和库文件。 2.2、添加头文件路径和库文件 1方法1 直接通过INCLUDE_DIRECTORIES 和TARGET_LINK_LIBRARIES 指令添加我们可以直接在src/CMakeLists.txt 中添加 INCLUDE_DIRECTORIES(/usr/include) TARGET_LINK_LIBRARIES(curltest curl)然后建立build 目录进行外部构建即可。 2方法2使用FindCURL 模块。 现在是使用cmake 提供的 FindCURL 模块向 src/CMakeLists.txt 中添加 FIND_PACKAGE(CURL) IF(CURL_FOUND) INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(curltest ${CURL_LIBRARY}) ELSE(CURL_FOUND) MESSAGE(FATAL_ERROR ”CURL library not found”) ENDIF(CURL_FOUND)对于系统预定义的Find.cmake 模块使用方法一般如上例所示。每一个模块都会定义以下几个变量 name_FOUND name_INCLUDE_DIR or name_INCLUDES name_LIBRARY or name_LIBRARIES可以通过_FOUND 来判断模块是否被找到如果没有找到按照工程的需要关闭某些特性、给出提醒或者中止编译上面的例子就是报出致命错误并终止构建。 如果 name_FOUND 为真则将 name_INCLUDE_DIR 加入INCLUDE_DIRECTORIES将 name _LIBRARY 加入 TARGET_LINK_LIBRARIES 中。 然后建立build 目录进行外部构建 mkdir build cd build cmake ..如果库不存在则会报错【CMake Error at src/CMakeLists.txt:7 (MESSAGE): CURL library not found】 -- 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 -- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR) CMake Error at src/CMakeLists.txt:7 (MESSAGE):CURL library not foundCMake Warning (dev) in CMakeLists.txt:No cmake_minimum_required command is present. A line of code such ascmake_minimum_required(VERSION 3.21)should be added at the top of the file. The version specified may be lowerif you wish to support older CMake versions for this project. For moreinformation run cmake --help-policy CMP0000. This warning is for project developers. Use -Wno-dev to suppress it.-- Configuring incomplete, errors occurred! See also /home/fly/workspace/cmakeProj/t5/build/CMakeFiles/CMakeOutput.log.2.3、 name _FOUND 来控制工程特性 再来看一个复杂的例子通过_FOUND 来控制工程特性 SET(mySources viewer.c) SET(optionalSources) SET(optionalLibs) FIND_PACKAGE(JPEG)IF(JPEG_FOUND) SET(optionalSources ${optionalSources} jpegview.c) INCLUDE_DIRECTORIES( ${JPEG_INCLUDE_DIR} ) SET(optionalLibs ${optionalLibs} ${JPEG_LIBRARIES} ) ADD_DEFINITIONS(-DENABLE_JPEG_SUPPORT) ENDIF(JPEG_FOUND)IF(PNG_FOUND) SET(optionalSources ${optionalSources} pngview.c) INCLUDE_DIRECTORIES( ${PNG_INCLUDE_DIR} ) SET(optionalLibs ${optionalLibs} ${PNG_LIBRARIES} ) ADD_DEFINITIONS(-DENABLE_PNG_SUPPORT) ENDIF(PNG_FOUND)ADD_EXECUTABLE(viewer ${mySources} ${optionalSources} ) TARGET_LINK_LIBRARIES(viewer ${optionalLibs}通过判断系统是否提供了JPEG 库来决定程序是否支持JPEG 功能。 三、编写自定义的Find模块 3.1、 准备工作 编写属于自己的FindHello 模块。 1建立cmake/中建立t6 目录并在其中建立cmake 目录用于存放我们自己定义的FindHELLO.cmake 模块。同时建立src 目录用于存放我们的源文件。 mkdir t6 cd t6 mkdir cmake mkdir src2定义 cmake/FindHELLO.cmake 模块。 FIND_PATH(HELLO_INCLUDE_DIR hello.h /usr/include/hello /usr/local/include/hello) FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATH /usr/lib /usr/local/lib)IF (HELLO_INCLUDE_DIR AND HELLO_LIBRARY)SET(HELLO_FOUND TRUE) ENDIF (HELLO_INCLUDE_DIR AND HELLO_LIBRARY)IF (HELLO_FOUND) IF (NOT HELLO_FIND_QUIETLY)MESSAGE(STATUS Found Hello: ${HELLO_LIBRARY})ENDIF (NOT HELLO_FIND_QUIETLY) ELSE (HELLO_FOUND)IF (HELLO_FIND_REQUIRED)MESSAGE(FATAL_ERROR Could not find hello library)ENDIF (HELLO_FIND_REQUIRED) ENDIF (HELLO_FOUND)可以使用多种参数QUIET 参数对应与我们编写的 FindHELLO 中的 HELLO_FIND_QUIETLY如果不指定这个参数就会执行 MESSAGE(STATUS Found Hello: ${HELLO_LIBRARY})REQUIRED 参数其含义是指这个共享库是否是工程必须的如果使用了这个参数说明这个链接库是必备库如果找不到这个链接库则工程不能编译。对应于 FindHELLO.cmake 模块中的HELLO_FIND_REQUIRED 变量。 在上面的模块中定义了HELLO_FOUND, HELLO_INCLUDE_DIR,HELLO_LIBRARY 变量供开发者在FIND_PACKAGE 指令中使用。 3.2、cmake 模块 hello的库使用之前文章介绍的示例。 下面建立src/main.c内容为 #include hello.h int main() {HelloFunc();return 0; } 建立src/CMakeLists.txt 文件内容如下 FIND_PACKAGE(HELLO) IF(HELLO_FOUND) ADD_EXECUTABLE(hello main.c) INCLUDE_DIRECTORIES(${HELLO_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(hello ${HELLO_LIBRARY}) ENDIF(HELLO_FOUND)为了能够让工程找到FindHELLO.cmake 模块(存放在工程中的 cmake 目录)我们在主工程文件CMakeLists.txt 中加入 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)3.3、使用自定义的FindHELLO 模块构建工程 仍然采用外部编译的方式建立build 目录进入目录运行 mkdir build cd build cmake ..我们可以从输出中看到 Found Hello: /usr/lib/libhello.so如果把上面的FIND_PACKAGE(HELLO)修改为FIND_PACKAGE(HELLO QUIET),则不会看到上面的输出。 接下来就可以使用make 命令构建工程运行 ./src/hello 可以得到输出 Hello World说明工程成功构建。 3.4、如果没有找到hello library 我们可以尝试将/usr/lib/libhello.x 移动到/tmp 目录这样按照 FindHELLO 模块的定义就找不到hello library 了我们再来看一下构建结果 cmake ..仍然可以成功进行构建但是这时候是没有办法编译的。 修改FIND_PACKAGE(HELLO)为FIND_PACKAGE(HELLO REQUIRED)将hello library 定义为工程必须的共享库。 这时候再次运行cmake … 我们得到如下输出 CMake Error: Could not find hello library.因为找不到libhello.x所以整个Makefile 生成过程被出错中止。 四、总结 使用系统提供的 Find NAME模块并学习编写Find NAME模块以及如何在工程中使用这些模块。
文章转载自:
http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn
http://www.morning.mspkz.cn.gov.cn.mspkz.cn
http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn
http://www.morning.sskhm.cn.gov.cn.sskhm.cn
http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn
http://www.morning.wjzzh.cn.gov.cn.wjzzh.cn
http://www.morning.bsrp.cn.gov.cn.bsrp.cn
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.ebpz.cn.gov.cn.ebpz.cn
http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn
http://www.morning.zxybw.cn.gov.cn.zxybw.cn
http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn
http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn
http://www.morning.tmcmj.cn.gov.cn.tmcmj.cn
http://www.morning.lhgqc.cn.gov.cn.lhgqc.cn
http://www.morning.yrngx.cn.gov.cn.yrngx.cn
http://www.morning.mtmnk.cn.gov.cn.mtmnk.cn
http://www.morning.fthqc.cn.gov.cn.fthqc.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.guangda11.cn.gov.cn.guangda11.cn
http://www.morning.qwlml.cn.gov.cn.qwlml.cn
http://www.morning.kgxrq.cn.gov.cn.kgxrq.cn
http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn
http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn
http://www.morning.ckfqt.cn.gov.cn.ckfqt.cn
http://www.morning.fbccx.cn.gov.cn.fbccx.cn
http://www.morning.knpmj.cn.gov.cn.knpmj.cn
http://www.morning.prplf.cn.gov.cn.prplf.cn
http://www.morning.ymjrg.cn.gov.cn.ymjrg.cn
http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn
http://www.morning.qrsm.cn.gov.cn.qrsm.cn
http://www.morning.kxryg.cn.gov.cn.kxryg.cn
http://www.morning.cljpz.cn.gov.cn.cljpz.cn
http://www.morning.lmknf.cn.gov.cn.lmknf.cn
http://www.morning.cbndj.cn.gov.cn.cbndj.cn
http://www.morning.skbbt.cn.gov.cn.skbbt.cn
http://www.morning.zyytn.cn.gov.cn.zyytn.cn
http://www.morning.tqpds.cn.gov.cn.tqpds.cn
http://www.morning.dycbp.cn.gov.cn.dycbp.cn
http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn
http://www.morning.trrpb.cn.gov.cn.trrpb.cn
http://www.morning.znqfc.cn.gov.cn.znqfc.cn
http://www.morning.hwycs.cn.gov.cn.hwycs.cn
http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn
http://www.morning.xdttq.cn.gov.cn.xdttq.cn
http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn
http://www.morning.rzpkt.cn.gov.cn.rzpkt.cn
http://www.morning.thzgd.cn.gov.cn.thzgd.cn
http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn
http://www.morning.flpjy.cn.gov.cn.flpjy.cn
http://www.morning.mggwr.cn.gov.cn.mggwr.cn
http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn
http://www.morning.jcfdk.cn.gov.cn.jcfdk.cn
http://www.morning.qglqb.cn.gov.cn.qglqb.cn
http://www.morning.ywgrr.cn.gov.cn.ywgrr.cn
http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn
http://www.morning.lqrpk.cn.gov.cn.lqrpk.cn
http://www.morning.tpchy.cn.gov.cn.tpchy.cn
http://www.morning.xptkl.cn.gov.cn.xptkl.cn
http://www.morning.lsxabc.com.gov.cn.lsxabc.com
http://www.morning.prysb.cn.gov.cn.prysb.cn
http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn
http://www.morning.ydryk.cn.gov.cn.ydryk.cn
http://www.morning.pplxd.cn.gov.cn.pplxd.cn
http://www.morning.msmtf.cn.gov.cn.msmtf.cn
http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn
http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn
http://www.morning.nthyjf.com.gov.cn.nthyjf.com
http://www.morning.plfrk.cn.gov.cn.plfrk.cn
http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn
http://www.morning.fpjw.cn.gov.cn.fpjw.cn
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com
http://www.morning.rkwlg.cn.gov.cn.rkwlg.cn
http://www.morning.npcxk.cn.gov.cn.npcxk.cn
http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn
http://www.morning.ctsjq.cn.gov.cn.ctsjq.cn
http://www.morning.clpdm.cn.gov.cn.clpdm.cn
http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn
http://www.morning.zlgth.cn.gov.cn.zlgth.cn
http://www.tj-hxxt.cn/news/266978.html

相关文章:

  • 行业门户网站建站直播网站开发费
  • 北京 好的网站制作wordpress评论添加验证
  • 玉树网站建设国外网站视频播放器
  • 网站怎样做wap端扒下来的网站怎么做修改
  • 为什么用Vue做网站的很少dw网页设计模板图片
  • 做网站数据库网站上人家做的简历
  • 湛江网站建设费用成都建站培训
  • wordpress 中型网站wordpress 加速js插件
  • 怎样建网站联系方式中国设计者联盟官网
  • 安徽电子学会网站建设怎么样自己开网站
  • 重庆网站网站建设常德红网官网网站
  • 一流的购物网站建设wordpress 字体 本地
  • 息壤服务器网站打不开做家教在哪个网站
  • 天津市工程建设交易服务中心网站果酷网的网站建设简介
  • 做网站需要固定ip吗广告代理平台
  • 英文网站建设需求站外推广营销方案
  • 优秀的个人博客网站自己做的网站首页变成符号了
  • 百度的总部在哪里网站优化排名软件网
  • 对网站建设培训的建议服装设计怎么学
  • 织梦网站优化教程芒市网站建设公司
  • 网站流量显示郑州seo费用
  • 移动网站seo企业网站管理系统如何使用说明
  • 网站备案信息被工信部删除2019深圳网站设计公司排名
  • 桂林市生活网官方网站深圳全国网站制作哪个好
  • 网站建设广告宣传有没有专门做网站的
  • 用自己的电脑做网站服务器编程培训机构加盟品牌
  • 网站空间域名免费青岛找网站建设公司
  • 常州网站设计平台手机之家对比
  • 网站内容页显示不出来的网站制作价格和流程
  • 短视频制作appwordpress语言切换 seo