首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cmake中的Find_path不起作用

Cmake中的Find_path不起作用
EN

Stack Overflow用户
提问于 2016-05-30 04:44:28
回答 1查看 2.7K关注 0票数 0

我有一个名为bitstream的定制包,希望在上游项目中使用它。

代码语言:javascript
复制
--upstreamProject
|
|--src
    |-- ...(many .cpp)
    |--CmakeLists.txt
|--include
    |-- ... (..many .hpp)
|--bitstream
    |--CMakeLists.txt
    |--bitstreamConfig.cmake
    |--src
        |-- bitstream.cpp
    |--include
        |-- bitstream.hpp

所以我写了bitstreamConfig.cmake

代码语言:javascript
复制
find_path(BITSTREAM_INCLUDE_DIR NAMES bitstream.hpp)
MESSAGE(STATUS "bitstream_include_dir: ${BITSTREAM_INCLUDE_DIR}")
find_library(BITSTREAM_LIBRARY NAMES bitstream)
MESSAGE(STATUS "BITSTREAM_LIBRARY: ${BITSTREAM_LIBRARY}")

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(BITSTREAM REQUIRED_VARS BITSTREAM_LIBRARY BITSTREAM_INCLUDE_DIR)

if(BITSTREAM_FOUND)
    set(BITSTREAM_LIBRARIES ${BITSTREAM_LIBRARY})
    set(BITSTREAM_INCLUDE_DIRS ${BITSTREAM_INCLUDE_DIR})
endif()

mark_as_advanced(BITSTREAM_INCLUDE_DIR BITSTREAM_LIBRARY)

在上游项目中,我补充如下:

代码语言:javascript
复制
SET(bitstream_DIR "${CMAKE_SOURCE_DIR}/bitstream")
FIND_PACKAGE(bitstream)
INCLUDE_DIRECTORIES(${BITSTREAM_INCLUDE_DIRS})

在上游项目src中,我添加:

代码语言:javascript
复制
TARGET_LINK_LIBRARIES(${...} ${BITSTREAM_LIBRARIES})

但是当运行cmake时,我得到了这样的结果:

代码语言:javascript
复制
-- bitstream_include_dir: BITSTREAM_INCLUDE_DIR-NOTFOUND
-- BITSTREAM_LIBRARY: BITSTREAM_LIBRARY-NOTFOUND
-- Could NOT find BITSTREAM (missing:  BITSTREAM_LIBRARY BITSTREAM_INCLUDE_DIR) 

请告诉我为什么cmake找不到正确的路径,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-30 08:10:17

对于搜索到的文件的可能位置,您还没有给find_path任何提示。默认情况下,它只在系统范围的dir中搜索,并且绝对不查看位流/。

路径文档页描述搜索算法,其中所有可能的提示都有明确的列表。

此外,您也混淆了套餐的模块和配置模式。

您的bitstreamConfig.cmake实际上实现了模块模式:它使用find_*命令定位项,并在最后调用find_package_handle_standard_args进行最终判断(无论是否找到包)。

但是命名*Config.cmake意味着配置模式,它(通常)用硬编码值填充所有变量并自动成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37517748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档