CMake find_package()找不到包含目录

时间:2015-11-04 21:39:28

标签: c++ cmake

我正在尝试安装两个项目:Foo和NeedsFoo。我已经使用cmake成功编译并在本地安装了Foo。但是,我在服务器上并且cmake似乎并没有出现在"记住" Foo在哪里。

在配置NeedsFoo的cmake中我有

list(APPEND CMAKE_MODULE_PATH "<prefix>/foo-install/CMake/FOO") # add path to FOOConfig.cmake
find_package(FOO REQUIRED)
if( FOO_FOUND )
   MESSAGE(STATUS "Found FOO!")
endif( FOO_FOUND )

MESSAGE(STATUS ${FOO_INCLUDE_DIRS})

&#34;发现Foo!&#34;打印---所以cmake找到FOO ---但变量${FOO_INCLUDE_DIRS}是空的,因此包不能编译。有什么想法吗?

编辑:服务器上似乎安装了另一个Foo副本。不幸的是,我无法使用它(它是我们项目的主要分支,我需要使用自己的分支)。我尝试将find_package调用更改为

find_package(FOO REQUIRED PATHS "<prefix>/foo-install/CMake/Foo" NO_DEFAULT_PATH) 

但这并没有解决问题。

1 个答案:

答案 0 :(得分:0)

确保已安装标头,通常您需要安装-dev或-devel软件包才能获取标头。如果它们已安装并且您可以在系统中看到它们,则它们可能位于cmake不期望的路径上。打开findFoo.cmake文件(在Linux上,这通常位于/ usr / share / c make-x.y / modules中)并检查预期位置列表,看看你是否安装在不太常规的位置。