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

神华公司两学一做网站益阳网站建设网站

神华公司两学一做网站,益阳网站建设网站,黄岛因特网站建设公司,学网页设计在哪学如果编译软件使用了外部库,事先并不知道它的头文件和链接库的位置。得在编译命令中加上包含它们的查找路径。CMake使用 find_package()命令来解决这个问题。本文讨论了find_package()的工作原理。 一、find_package()…

如果编译软件使用了外部库,事先并不知道它的头文件和链接库的位置。得在编译命令中加上包含它们的查找路径。CMake使用 find_package()命令来解决这个问题。本文讨论了find_package()的工作原理。

一、find_package()的查找*.cmake的顺序:

1、 find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake: 
变量${CMAKE_MODULE_PATH}中的所有目录。如果没有,然后再查看它自己的模块目录 /share/cmake-x.y/Modules/ ($CMAKE_ROOT的具体值可以通过CMake中message命令输出)。这称为模块模式。

2、 如果没找到这样的文件,find_package()会在~/.cmake/packages//usr/local/share/中的各个包目录中查找,寻找<库名字的大写>Config.cmake 或者 <库名字的小写>-config.cmake (比如库Opencv,它会查找/usr/local/share/OpenCV中的OpenCVConfig.cmakeopencv-config.cmake)。**这称为配置模式。

**不管使用哪一种模式,只要找到*.cmake*.cmake里面都会定义下面这些变量:

<NAME>_FOUND
<NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
<NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
<NAME>_DEFINITIONS

注意大部分包的这些变量中的包名是全大写的,如 LIBFOO_FOUND ,有些包则使用包的实际大小写,如 LibFoo_FOUND

  如果找到这个包,则可以通过在工程的顶层目录中的CMakeLists.txt 文件添加 include_directories(<NAME>_INCLUDE_DIRS) 来包含库的头文件,添加target_link_libraries(源文件 <NAME>_LIBRARIES)命令将源文件与库文件链接起来。

二、使用外部库的方式:

  为了能支持各种常见的库和包,CMake自带了很多模块。可以通过命令 cmake --help-module-list 得到你的CMake支持的模块的列表,或者直接查看模块路径。比如Ubuntu上,模块的路径是 /usr/share/cmake/Modules/ 

  让我们以bzip2库为例。CMake中有个FindBZip2.cmake 模块。只要使用 find_package(BZip2) 调用这个模块,cmake会自动给一些变量赋值,然后就可以在CMakelists.txt中使用它们了。变量的列表可以查看cmake模块文件,或者使用命令 cmake –help-module FindBZip2 

比如一个使用bzip2的简单程序,编译器需要知道 bzlib.h 的位置,链接器需要找到bzip2库(动态链接的话,Unix上是 libbz2.so 类似的文件,Windows上是 libbz2.dll )。

cmake_minimum_required(VERSION 2.8)
project(helloworld)
add_executable(helloworld hello.c)
find_package(BZip2)
if (BZIP2_FOUND)include_directories(${BZIP_INCLUDE_DIRS})target_link_libraries (helloworld ${BZIP2_LIBRARIES})
endif (BZIP2_FOUND)

  可以用 cmake 和 make VERBOSE=1 来验证传给编译器和链接器的flag是否正确。也可以用ldd或者dependency walker之类的工具在编译后验证 helloworld 链接的文件。

http://www.yayakq.cn/news/761422/

相关文章:

  • 聊城网站公司深圳谷歌网络推广公司
  • 京东客网站怎么做wordpress查询数据库乱码
  • 域名网站查询石家庄网站建站推广
  • thinkphp3.2 企业网站源码惠州惠阳网站建设
  • 可以在线编程的网站wordpress换域名后图片路径不对
  • 如何填写网站建设计划表网站开发属于程序员吗
  • 建材城电商网站建设网站兼容怎么调
  • asp.net做网站头部和尾部_都用什么来实现电子商务网站的建设
  • 济南地产行业网站开发衡东网络推广公司
  • 常州市网站建设设计怎么做试玩平台推广网站
  • 简单的工作室网站模板焦作网站建设哪家权威
  • 在网站建设流程中编程属于()阶段四川建设网共享平台
  • 网站建设模板可用吗买外链
  • 大学生毕业设计课题做网站网络违法犯罪网站举报
  • wordpress浮窗音乐百度seo关键词优化排行
  • 中核西北建设集团网站营销推广
  • 上海闵行做网站的公司重庆企业建站公司
  • 简单建设网站dedecms手机网站开发
  • 做的网站有广告图片微信网站开发是什么
  • 东莞电商网站建设html基本结构代码
  • 做游戏的外包网站建行个人网上银行登录入口官网
  • 丹灶网站建设案例南宁建站模板展示
  • 求职网站开发多少钱婚庆公司收费标准
  • 城乡企业建设部网站友情链接方面pr的选择应该优先选择的链接为
  • 网站架构设计师月薪多少企业专业网站建设哪家好
  • 网站建设哪个语言好祥云网站推广
  • 松江新城建设有限公司网站中国app开发公司排名
  • 电商网站建设与运行千图网app下载
  • 做网站什么什么为什么几年前做的网站视频看不了
  • 去什么网站做推广建立企业官网