0
我有一個名爲bitstream
的自定義程序包,並且想要在上游項目中使用它。Cmake中的Find_path不起作用
--upstreamProject
|
|--src
|-- ...(many .cpp)
|--CmakeLists.txt
|--include
|-- ... (..many .hpp)
|--bitstream
|--CMakeLists.txt
|--bitstreamConfig.cmake
|--src
|-- bitstream.cpp
|--include
|-- bitstream.hpp
所以我寫bitstreamConfig.cmake
:
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)
,並在上游項目,我補充一下:
上游項目src
SET(bitstream_DIR "${CMAKE_SOURCE_DIR}/bitstream")
FIND_PACKAGE(bitstream)
INCLUDE_DIRECTORIES(${BITSTREAM_INCLUDE_DIRS})
我補充一下:
TARGET_LINK_LIBRARIES(${...} ${BITSTREAM_LIBRARIES})
,但在運行時cmake
我說:
-- bitstream_include_dir: BITSTREAM_INCLUDE_DIR-NOTFOUND
-- BITSTREAM_LIBRARY: BITSTREAM_LIBRARY-NOTFOUND
-- Could NOT find BITSTREAM (missing: BITSTREAM_LIBRARY BITSTREAM_INCLUDE_DIR)
請告訴我爲什麼CMake的不能提前找到正確的路徑,謝謝!
我不會使用cmake這種方式。 cmake'package finding'命令是爲了查找外部程序包(由其他人編譯的程序包 - 也可以使用cmake,但不一定)。因此,要麼使比特流包完全分離的項目或使其成爲您的項目的一部分,並使用cmake包括而不是查找包。 –