CMake学习笔记5.doc_第1页
CMake学习笔记5.doc_第2页
CMake学习笔记5.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

cmake学习笔记(五)在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西。但靠这些知识还是不能看懂PySide使用CMakeLists文件,接下来继续学习find_package的 config 模式及package configure文件相关知识find_package 的 config 模式当CMakeLists.txt中使用find_package命令时,首先启用的是 module 模式:按照 CMAKE_MODULE_PATH 路径和cmake的安装路径去搜索finder文件 Find.cmake如果finder未找到,则开始 config 模式:将在下列路径下查找 配置 文件 Config.cmake 或 -config.cmake/(W)/(cmake|CMake)/(W)/*/(W)/*/(cmake|CMake)/(W)/(share|lib)/cmake/*/(U)/(share|lib)/*/(U)/(share|lib)/*/(cmake|CMake)/(U) find_package 参数及规则见manualConfig.cmake该文件至少需提供头文件路径和库文件信息。比如 ApiExtractorConfig.cmake 在Windows下一个例子:# - try to find APIEXTRACTOR# APIEXTRACTOR_INCLUDE_DIR - Directories to include to use APIEXTRACTOR# APIEXTRACTOR_LIBRARIES - Files to link against to use APIEXTRACTORSET(APIEXTRACTOR_INCLUDE_DIR D:/shiboken/dist/include/apiextractor)if(MSVC) SET(APIEXTRACTOR_LIBRARY D:/shiboken/dist/lib/apiextractor.lib)elseif(WIN32) SET(APIEXTRACTOR_LIBRARY D:/shiboken/dist/bin/apiextractor.dll)else() SET(APIEXTRACTOR_LIBRARY D:/shiboken/dist/lib/apiextractor.dll)endif()该文件是通过 configure_file 机制生成的,我们看看 ApiExtractorConfig.cmake.in 文件:SET(APIEXTRACTOR_INCLUDE_DIR CMAKE_INSTALL_PREFIX/include/apiextractorapiextractor_SUFFIX)if(MSVC) SET(APIEXTRACTOR_LIBRARY LIB_INSTALL_DIR/CMAKE_SHARED_LIBRARY_PREFIXapiextractorapiextractor_SUFFIXLIBRARY_OUTPUT_SUFFIX.lib)elseif(WIN32) SET(APIEXTRACTOR_LIBRARY CMAKE_INSTALL_PREFIX/bin/CMAKE_SHARED_LIBRARY_PREFIXapiextractorapiextractor_SUFFIXLIBRARY_OUTPUT_SUFFIXCMAKE_SHARED_LIBRARY_SUFFIX)else() SET(APIEXTRACTOR_LIBRARY LIB_INSTALL_DIR/CMAKE_SHARED_LIBRARY_PREFIXapiextractorapiextractor_SUFFIXLIBRARY_OUTPUT_SUFFIXCMAKE_SHARED_LIBRARY_SUFFIX)endif()对应的命令(变量的定义略过)configure_file($CMAKE_CURRENT_SOURCE_DIR/ApiExtractorConfig.cmake.in $CMAKE_CURRENT_BINARY_DIR/ApiExtractorConfig.cmake ONLY)ConfigVersion.cmake该文件用来比对版本是否匹配,看看ApiExtractorConfigVersion.cmake.in 的内容:set(PACKAGE_VERSION apiextractor_VERSION)if($PACKAGE_VERSION VERSION_LESS $PACKAGE_FIND_VERSION ) set(PACKAGE_VERSION_COMPATIBLE FALSE)else($PACKAGE_VERSION VERSION_LESS $PACKAGE_FIND_VERSION ) set(PACKAGE_VERSION_COMPATIBLE TRUE) if( $PACKAGE_FIND_VERSION STREQUAL $PACKAGE_VERSION) set(PACKAGE_VERSION_EXACT TRUE) endif( $PACKAGE_FIND_VERSION STREQUAL $PACKAGE_VERSION)endif($PACKAGE_VERSION VERSION_LESS $PACKAGE_FIND_VERSION )一般提供设置下面的变量PACKAGE_VERSION完整的版本字符串PACKAGE_VERSION_EXACT如果完全匹配为真PACKAGE_VERSION_COMPATIBLE如果兼容为真PACKAGE_VERSION_UNSUITABLE如果不可用为真find_package进而根据这些设置_VERSIONfull provided version string_VERSION_MAJORmajor version if provided, else 0_VERSION_MINORminor version if provided, else 0_VERSION_PATCHpatch version if provided, else 0_VERSION_TWEAKtweak version if provided, else 0参考/cmake/help/cmake-2-8-docs.ht

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论