Cmake Practice学习遇到问题

4 篇文章 0 订阅

在学习网上流行的Cmake实践即Cmake Practice文档时,自己按照文档都验证了其中的例子和程序,但在最后一章遇到问题并更正记录如下:

九,复杂的例子:模块的使用和自定义模块

二,编写属于自己的 FindHello 模块。

1,定义 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)

自己在验证该自定义cmake模块时,通过message函数打印,发现找不到HELLO_LIBRARY变量,一直显示

HELLO_LIBRARY:HELLO_LIBRARY-NOTFOUND

后经查找官网 FIND_LIBRARY函数定义即使用方法,终于解决问题:

官网函数说明如下:

find_library (
          <VAR>
          name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
          [HINTS path1 [path2 ... ENV var]]
          [PATHS path1 [path2 ... ENV var]]
          [PATH_SUFFIXES suffix1 [suffix2 ...]]
          [DOC "cache documentation string"]
          [NO_DEFAULT_PATH]
          [NO_CMAKE_ENVIRONMENT_PATH]
          [NO_CMAKE_PATH]
          [NO_SYSTEM_ENVIRONMENT_PATH]
          [NO_CMAKE_SYSTEM_PATH]
          [CMAKE_FIND_ROOT_PATH_BOTH |
           ONLY_CMAKE_FIND_ROOT_PATH |
           NO_CMAKE_FIND_ROOT_PATH]
         )

将上面自定义模块中的那句

FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATH /usr/lib /usr/local/lib)

改为:

FIND_LIBRARY(HELLO_LIBRARY NAMES hello PATHS usr/lib /usr/local/lib)

即可,顺利找到自定义模块及编译输出,故记录之。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值