0
我有以下CMakeLists.txt
:影響
cmake_minimum_required(VERSION 2.6)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
find_package(FOO QUIET NO_CMAKE_PACKAGE_REGISTRY)
if (FOO_FOUND)
message("FOO is found")
else (FOO_FOUND)
message("FOO not found")
endif (FOO_FOUND)
find_package(FOO QUIET)
if (FOO_FOUND)
message("FOO (2) is found")
else (FOO_FOUND)
message("FOO (2) not found")
endif (FOO_FOUND)
有一個文件${CMAKE_SOURCE_DIR}/cmake/FindFOO.cmake
。然而,當我運行cmake
檢測包FOO
僅在第二種情況:
-- (...)
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
FOO not found
FOO (2) is found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/me/tmp/build
我的文檔的理解是,NO_CMAKE_PACKAGE_REGISTRY
禁止find_package()
看~/.cmake/package/FOO
但我在這裏什麼都沒有。我有與cmake 2.8.9和cmake 3.5.1相同的行爲。
爲什麼find_package()
在第一種情況下找不到該文件?
如果我複製'FindFOO.cmake'成'FOOConfig.cmake'它不起作用或者同一地點造成的。但是如果我將'CMAKE_PREFIX_PATH'定義爲指向我的本地目錄'$ {CMAKE_SOURCE_DIR}/cmake /',那麼它確實適用於這兩種情況。謝謝! – xiawi
不同模式的'find_package()'使用不同的algothms進行搜索和不同的變量。您最初設置的變量'CMAKE_MODULE_PATH'僅影響**模塊**模式,變量'CMAKE_PREFIX_PATH'僅影響** config **模式。 – Tsyvarev